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

发布于 2024-11-05 20:14:52 字数 896 浏览 2 评论 0原文

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

I'm using jQuery and PHP, I have a problem with history.pushState.

When I click the anchor tag or the link once the URL in the browser looks like this www.example.com/index.php/home/viewer/id

When I click the link again the URL in the browser looks like this
www.example.com/index.php/home/photo_viewer/index.php/home/viewer/id
which is not correct.

I want the URL in the browser to be www.example.com/index.php/home/viewer/id

How do I solve this problem?

<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; } 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伪装你 2024-11-12 20:14:52

可能是因为您的 URL 是相对的。您必须通过在前面添加斜杠使其成为绝对路径:

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

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

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

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

Probably because your URL is relative. You have to make it absolute by prepending a slash:

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

A relative URL always specifies a resources that is relative to the current resource, i.e. the path is just appended to the current path. See also the documentation:

The new URL does not need to be absolute; if it's relative, it's resolved relative to the current URL.

Update: Although it does make a big difference, access the href attribute of the link, instead of the link itself: link.href.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文