2012-04-19 68 views
1

下面是這種情況:加載HTML鏈接到div?

我有3個文件:

的index.php

<html><head> 
<script type="text/javascript" src="../jquery.js"></script> 
<script> 
    $(document).ready(function(){ 
     $("#local").load("FarLinkLoader/farlink.php"); 
    }); 
</script> 
</head><body> 
<div id='local'></div> 
</body></html> 

/FarLinkLoader/farlink.php

<div> 
<a href="farfar/farfarlink.php">farfarlink</a> 
</div> 

/FarLinkLoader/farfar/farfarlin k.php

text or whatever 

的問題是,當farlink.php裝入index.php鏈路內farlink.php變爲無效,該鏈路的參考從index.php並且不是以前的文件。

反正是有解決這個? IFRAME擅長這個,實際上是一個瀏覽器中的「瀏覽器」,因爲這是正在通過iframe中加載的頁面有它的鄰居文件/從那裏,而不是引用來自前頁內頁目錄加載,因爲它的發生ajax請求的情況。

什麼是替代這種期望的功能的各種可能性?

預期的感謝!

回答

1

我知道你曾經說過,「絕對URL是不是一個解決辦法」,但如果所有的文件駐留在同一臺服務器上,你可以使用不相對的,不是絕對有規定的域名網址,但對於你的服務器的根來說是絕對的,因此無論它們包含什麼頁面,都會引用相同的文件。只需使用前面的「/」字符和從根目錄到每個文件的完整路徑即可。

+1

所以我應該使用$ _ SERVER從PHP產生的呢? – 2012-04-19 14:38:24

+0

我不是知識淵博關於PHP知道這個問題的答案,但我只是想這是寫的,你會在你的/FarLinkLoader/farlink.php文件路徑的方式 – redlena 2012-04-19 21:38:30

-1

我想你可以加點jQuery來自動更新您的加載頁面的所有網址(未經測試):

$(document).ready(function(){ 
    $('#local').load('FarLinkLoader/farlink.php', function() { 
     $('#local').find('a').each(function() { 
      $(this).attr('href', function(i,val) { 
       if (val.substr(0,1)!=='/' && val.substr(0,7)!=='http://') { 
        return 'FarLinkLoader/'+val; 
       } else { 
        return val; 
       }; 
      }); 
     }); 
    }); 
}); 

還有一個<base href="...">標籤,你可以把文件頭,但是這會影響整個文檔中的所有相關鏈接並可能不合需要。