window.location没有刷新到现有的URL

时间:2015-04-03 19:07:36

标签: javascript jquery

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

这是将jQuery标签号添加到URL的代码:

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

页面的完整网址为http://somedomain.com/includes/nonadmin_user_profile.php#tabs-5,其中包含jQuery水平标签的标签号。

我正在使用此脚本刷新并保持在同一页面上:echo "<script>window.location=window.location</script>";

在这里刷新是一个问题,因为它落在这个URL上,不包括标签号。 http://somedomain.com/includes/nonadmin_user_profile.php

非常感谢任何建议。

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

3 个答案:

答案 0 :(得分:1)

可能正在使用onclick事件或类似事件处理选项卡控件,并且不会侦听哈希更改onload。如果存在哈希更改,您可能需要添加一些自定义JS来强制更改选项卡。

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

document.location.reload(true);

来自文档:

  

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

如果需要将其集成到PHP echo '<script>document.location.reload(true);</script>'; 结构中,请使用:

{{1}}

答案 1 :(得分:1)

每灾难更快的请求,遇到的问题只是浏览器没有到达页面的所需位置。表单数据已成功提交并加载了正确的页面。

他的问题的解决方案是修改form的{​​{1}}属性以包含位置信息(类似于向锚添加位置信息)。

原件:

action

新:

<form action="nonadmin_user_profile.php" method="post">

原帖:

<form action="nonadmin_user_profile.php#tabs-5" method="post"> 重定向应包含位置信息。

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

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

如果您只想要位置信息,可以使用window.location = window.location,但这只会在页面上生成位置,而不是页面的网址。

您遇到的问题将与表单提交有关。要在不更改页面的情况下提交表单,您必须将表单提交到新窗口(将window.location.hash添加到表单中)或实现AJAX。在任何一种情况下,我们都需要更多的代码来帮助您正确地进行集成。

答案 2 :(得分:0)

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

window.location.reload();

或者举个例子:

echo "<script>window.location.reload();</script>";