2012-04-19 66 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="...">标签,你可以把文件头,但是这会影响整个文档中的所有相关链接并可能不合需要。