2011-05-10 59 views
2

我正在使用jQuery和PHP,我有一个history.pushState问题。history.pushState()不显示正确的URL

当我点击锚标记或链接一旦在浏览器中的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; } 

回答

5

可能是因为您的网址是相对的。你必须让它绝对的前面加上一个斜线:

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

相对URL始终指定资源是相对当前的资源,即路径只是追加到当前路径。另见documentation

新的URL不必是绝对的;如果它是相对的,它将相对于当前的URL进行解析。

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

+0

它不起作用。任何解决方案谢谢。 – user634850 2011-05-10 13:00:06

+0

@user:你说你编辑了代码,但是URL仍然看起来是一样的......它将使用绝对URL。 – 2011-05-10 13:03:08

+0

你是对的!感谢您帮助它现在正在工作.. – user634850 2011-05-10 13:24:18