我有一个带有jQuery水平选项卡实现的PHP页面。我添加了一个jQuery脚本,以便页面URL反映tab#。我在页面上有一个表单,在提交表单时,我需要刷新并保持在同一个页面上,以包含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>该页面的完整URL为profile.php#tabs-5,包括jQuery水平选项卡的选项卡号。
我使用这个脚本刷新并停留在相同的页面上:echo "<script>window.location=window.location</script>";
在刷新时,这是一个问题,因为它落在这个URL上,这个URL不包括标签号。profile.php
任何建议都将不胜感激。
下面是另一个细节:如果我只是使用浏览器刷新按钮刷新页面,或者右键单击页面并刷新页面,则不会出现上述问题。在这种情况下,页面会刷新,并使用tab#在完整的url上停留。
发布于 2015-04-03 19:15:04
对于灾难Faster的请求,遇到的问题很简单,就是浏览器没有到达所需的页面位置。表单数据已成功提交,并加载了正确的页面。
他的解决方案是修改form的action属性以包含位置信息(类似于向锚添加位置信息)。
原件:
<form action="nonadmin_user_profile.php" method="post">新的:
<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。在这两种情况下,我们都需要更多的代码来帮助正确地集成它。
发布于 2015-04-03 19:10:06
选项卡控件很可能是用onclick事件或类似的东西来处理的,并且没有监听散列更改onload。如果有散列更改,您可能需要添加一些自定义JS来强制进行选项卡更改。
使用reload()方法有什么问题?
document.location.reload(true);从医生那里:
Location.reload()方法从当前URL重新加载资源。它的可选唯一参数是Boolean,当它为真时,将导致页面始终从服务器重新加载。如果为false或未指定,浏览器可以从其缓存中重新加载该页。
如果需要将其集成到PHP结构中,请使用:
echo '<script>document.location.reload(true);</script>';发布于 2015-04-03 19:09:59
您应该使用reload()刷新页面,例如:
window.location.reload();或者给出你的例子:
echo "<script>window.location.reload();</script>";https://stackoverflow.com/questions/29438221
复制相似问题