如何重新加载一个没有POSTDATA警告的页面?
我想重新加载一个页面使用:
window.location.reload(true);
但是我收到POSTDATA警告,因为刷新function要重新发送以前的POST表单数据。 如何在没有此警告的情况下刷新我的页面?
更新:我没有控制该项目! 我无法解决邮政本身!
只是在JavaScript中改变window.location
是危险的,因为用户仍然可以点击后退button并重新提交post,这可能会有意想不到的结果(如重复购买 )。 PRG是一个更好的解决scheme
使用Post / Redirect / Get(PRG)模式
为了避免这个问题,许多Web应用程序使用PRG模式,而不是直接返回HTML页面,POST操作返回一个redirect命令(使用HTTP 303响应代码(有时是302)和HTTP“Location”响应头)指示浏览器使用HTTP GET请求加载不同的页面。 然后可以安全地将结果页面join书签或重新加载而没有意外的副作用。
没有警告就不能刷新; 刷新指示浏览器重复上一个操作。 如果重复上一个操作涉及重新提交数据,则select是否警告用户是由浏览器决定的。
您可以通过执行以下操作重新导航至同一页面:
window.location = window.location.href;
我有一些问题与锚/散列url(包括#)不重装使用雷克斯的解决scheme…
所以我最终通过删除哈希部分结束:
window.location = window.location.href.split("#")[0];
要绕过POST警告,您必须使用完整的URL重新加载页面。 工作正常。
window.location.href = window.location.protocol +'//'+ window.location.host + window.location.pathname;
怎么样window.location.replace(window.location.href);
如果您处于完成发布数据的阶段,并且只想重新查看页面,则可以使用window.location,甚至可以附加一个随机string作为查询参数,以保证新版本页。
你可以使用JavaScript:
window.location.assign(document.URL);
在Firefox和Chrome上为我工作
检查这个链接: http : //www.codeproject.com/Tips/433399/PRG-Pattern-Post-Redirect-Get
Nikl的版本没有通过获取查询参数,我使用了下面的修改版本:
window.location.href = window.location.protocol +'//'+ window.location.host + window.location.pathname + window.location.search;
或者在我的情况下,我需要刷新最上面的页面\ frame,所以我使用了以下版本
window.top.location.href = window.top.location.protocol +'//'+ window.top.location.host + window.top.location.pathname + window.top.location.search;
<html:form name="Form" type="abc" action="abc.do" method="get" onsubmit="return false;">
method="get"
– 解决问题。
if method="post"
那么只有警告来了。
嗨如果您使用GET方法,而不是POST,那么我们不能表单提交值。 如果你使用window.opener.location.href = window.opener.location.href; 那么我们可以触发数据库,我们可以得到的价值,但唯一的事情是JSP是不刷新事件虽然具有forms值的scriplet
问候帕拉尼
我已经写了一个函数,将重新加载页面没有提交后,它也将与哈希。
我通过在名为reload
的URL中添加/修改GET参数来完成此操作,方法是使用当前时间戳以ms为单位更新其值。
var reload = function () { var regex = new RegExp("([?;&])reload[^&;]*[;&]?"); var query = window.location.href.split('#')[0].replace(regex, "$1").replace(/&$/, ''); window.location.href = (window.location.href.indexOf('?') < 0 ? "?" : query + (query.slice(-1) != "?" ? "&" : "")) + "reload=" + new Date().getTime() + window.location.hash; };
请记住,如果你想在href属性中触发这个函数,可以这样实现: href="javascript:reload();void 0;"
使它成功地工作。
我的解决scheme的缺点是它会改变URL,所以这个“重新加载”不是一个真正的重新加载,而是一个不同的查询负载。 不过,它可以适合你的需求,就像它对我来说。