首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.location不刷新现有的URL

window.location不刷新现有的URL
EN

Stack Overflow用户
提问于 2015-04-03 19:07:35
回答 3查看 2.9K关注 0票数 0

我有一个带有jQuery水平选项卡实现的PHP页面。我添加了一个jQuery脚本,以便页面URL反映tab#。我在页面上有一个表单,在提交表单时,我需要刷新并保持在同一个页面上,以包含jQuery正确的选项卡号。

这是将jQuery选项卡号添加到URL的代码:

代码语言:javascript
复制
<script>
jQuery(function($) {

    $("<p>").html("Loaded at " + new Date()).appendTo(
        document.body
    );
    showTab(location.hash || "#tabs-1");

    $("#nav a").click(function() {
        var hash = this.getAttribute("href");
        if (hash.substring(0, 1) === "#") {
            hash = hash.substring(1);
        }
        location.hash = hash;
        showTab(hash);
        return false;
    });

    function showTab(hash) {
        $("div.tab").hide();
        $("#tab-" + hash).show();
    }

});

</script>

该页面的完整URL为profile.php#tabs-5,包括jQuery水平选项卡的选项卡号。

我使用这个脚本刷新并停留在相同的页面上:echo "<script>window.location=window.location</script>";

在刷新时,这是一个问题,因为它落在这个URL上,这个URL不包括标签号。profile.php

任何建议都将不胜感激。

下面是另一个细节:如果我只是使用浏览器刷新按钮刷新页面,或者右键单击页面并刷新页面,则不会出现上述问题。在这种情况下,页面会刷新,并使用tab#在完整的url上停留。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-03 19:15:04

对于灾难Faster的请求,遇到的问题很简单,就是浏览器没有到达所需的页面位置。表单数据已成功提交,并加载了正确的页面。

他的解决方案是修改formaction属性以包含位置信息(类似于向锚添加位置信息)。

原件:

代码语言:javascript
复制
<form action="nonadmin_user_profile.php" method="post">

新的:

代码语言:javascript
复制
<form action="nonadmin_user_profile.php#tabs-5" method="post">

原文:

window.location = window.location重定向应该包括位置信息。

JSFiddle:http://jsfiddle.net/6dqcmh9d/

如果首先单击该按钮,它将报告包含位置信息的URL,因为它尚未添加到URL中。然后单击链接并重新单击按钮。您将收到添加了位置信息的URL。

如果只需要位置信息,可以使用window.location.hash,但这只会产生页面上的位置,而不是页面的URL。

您将遇到的问题是表单提交。若要在不更改页面的情况下提交表单,则必须将表单提交到新窗口(将target="_blank"添加到表单)或实现AJAX。在这两种情况下,我们都需要更多的代码来帮助正确地集成它。

票数 1
EN

Stack Overflow用户

发布于 2015-04-03 19:10:06

选项卡控件很可能是用onclick事件或类似的东西来处理的,并且没有监听散列更改onload。如果有散列更改,您可能需要添加一些自定义JS来强制进行选项卡更改。

使用reload()方法有什么问题?

代码语言:javascript
复制
document.location.reload(true);

从医生那里:

Location.reload()方法从当前URL重新加载资源。它的可选唯一参数是Boolean,当它为真时,将导致页面始终从服务器重新加载。如果为false或未指定,浏览器可以从其缓存中重新加载该页。

如果需要将其集成到PHP结构中,请使用:

代码语言:javascript
复制
echo '<script>document.location.reload(true);</script>';
票数 1
EN

Stack Overflow用户

发布于 2015-04-03 19:09:59

您应该使用reload()刷新页面,例如:

代码语言:javascript
复制
window.location.reload();

或者给出你的例子:

代码语言:javascript
复制
echo "<script>window.location.reload();</script>";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29438221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档