我有一个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上。
答案 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>";