如何重新加载一个没有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,所以这个“重新加载”不是一个真正的重新加载,而是一个不同的查询负载。 不过,它可以适合你的需求,就像它对我来说。