我想使用以下命令重新加载页面:
window.location.reload(true);
但是我收到POSTDATA警告,因为刷新函数想要重新发送以前的POST表单数据.如何在没有此警告的情况下刷新页面?
更新:我无法控制项目!我无法解决POST本身!
没有警告就无法刷新; refresh指示浏览器重复上一个操作.如果重复上一个操作涉及重新提交数据,则由浏览器选择是否警告用户.
您可以通过以下操作重新导航到具有新会话的同一页面:
window.location = window.location.href;
只是更改window.location
JavaScript是危险的,因为用户仍然可以点击后退按钮并重新提交帖子,这可能会产生意外结果(例如重复购买).PRG是一个更好的解决方案
使用发布/重定向/获取(PRG)模式
为了避免这个问题,许多Web应用程序使用PRG模式 - 而不是直接返回HTML页面,POST操作返回重定向命令(使用HTTP 303响应代码(有时是302)和HTTP"Location"响应头),指示浏览器使用HTTP GET请求加载不同的页面.然后可以安全地将结果页面加入书签或重新加载,而不会产生意外的副作用.
我有一些问题,锚/ hash-urls(包括#)没有使用Rex的解决方案重新加载...
所以我最终删除了哈希部分:
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)怎么样;