2

我正在使用 jQuery 和 PHP,我对history.pushState.

当我单击锚标记或链接时,一旦浏览器中的 URL 看起来像这样www.example.com/index.php/home/viewer/id

当我再次单击该链接时,浏览器中的 URL 看起来像这样 www.example.com/index.php/home/photo_viewer/index.php/home/viewer/id
,这是不正确的。

我希望浏览器中的 URL 是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; } 
4

1 回答 1

6

可能是因为您的 URL 是相对的。你必须在前面加上一个斜杠来使其绝对化:

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

相对 URL 始终指定对于当前资源的资源,即路径只是附加到当前路径。另请参阅文档

新的 URL 不需要是绝对的;如果是相对的,则相对于当前 URL 进行解析。

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

于 2011-05-10T12:41:48.167 回答