history.pushState()未显示正确的URL

时间:2011-05-10 12:38:00

标签: jquery html5 pushstate

我正在使用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; } 

1 个答案:

答案 0 :(得分:6)

可能是因为您的网址是相对的。你必须通过预先设置一个斜杠来使它成为绝对的:

href="/index.php/home/viewer/..."
//    ^

相对URL始终指定与当前资源 relative 的资源,即该路径仅附加到当前路径。另请参阅documentation

  

新网址不一定是绝对的;如果它是相对的,则相对于当前URL进行解析。

更新虽然它确实有很大的不同,但请访问链接的href属性,而不是链接本身:link.href