我正在使用jQuery和PHP,我遇到了history.pushState
的问题。
当我点击锚标记或链接后,浏览器中的网址如下所示www.example.com/index.php/home/viewer/id
当我再次点击该链接时,浏览器中的URL如下所示
www.example.com/index.php/home/photo_viewer/index.php/home/viewer/id
这是不正确的。
我希望浏览器中的网址为www.example.com/index.php/home/viewer/id
我该如何解决这个问题?
<a href="index.php/home/viewer/ $row['id'] " Onclick="viewer(this); return false;"> id </a>
<script type="text/javascript">
function viewer(link){
var ajax_data ={ajax:'1'};
$.ajax({
type: "POST",
url: link,
data: ajax_data,
success: function(html){
$("#viewer").html(html);
window.history.pushState(null,null, link);
e.preventDefault();
}});
return false; }
答案 0 :(得分:6)
可能是因为您的网址是相对的。你必须通过预先设置一个斜杠来使它成为绝对的:
href="/index.php/home/viewer/..."
// ^
相对URL始终指定与当前资源 relative 的资源,即该路径仅附加到当前路径。另请参阅documentation:
新网址不一定是绝对的;如果它是相对的,则相对于当前URL进行解析。
更新虽然它确实有很大的不同,但请访问链接的href
属性,而不是链接本身:link.href
。