使用JavaScript刷新页面无效。

3
我向服务器发送了一个POST请求,服务器返回了一个JSP页面。现在,如果我使用浏览器的刷新按钮,会得到一个确认框来重新提交数据,然后页面可以成功地重新加载。
但是,当我尝试使用JavaScript刷新页面时,我没有收到任何确认框,而且重新加载也不起作用。我已经尝试了所有的刷新方法,例如:
- location.reload() - window.location.reload() - window.location.href = window.location.href - history.go(0);
我认为问题在于使用JavaScript刷新时发送了一个GET请求,它无法找到必要的参数。
这个问题只出现在Chrome浏览器中... 在Firefox和IE中都可以正常工作!

https://dev59.com/uXRB5IYBdhLWcg3wn4bb - c69
5个回答

1

reload 方法可以使用缓存重新加载页面。指定 force 参数使其从服务器获取页面:

window.location.reload(true);

1
force参数已被弃用。 - Jacob Lee

1
parent.window.location.reload(true);

对我而言在Chrome上运行正常...终于

解释:parent.window的含义

指向当前窗口或子框架的父级引用。

如果一个窗口没有父级,那么它的parent属性就是对它自己的引用。

当一个窗口被加载到


0
唯一的解决方案是使用一些额外值调用相同的URL。
这是常规重新加载脚本,在IE和FF上工作正常,但在Chrome和Safari上不起作用。
window.location = location.href; 

要使所有浏览器类型的重新加载生效,请使用:

window.location = location.href + '?session=' + sMath.floor((Math.random() * 1000000) + 1);

已在IE、FF、Chrome和Safari上进行了测试。


在页面链接中添加一个随机键就可以解决问题了。关键是浏览器在页面链接改变之前不会重新加载。 - Rehmat

0

我尝试了所有可能的解决方案(ajax调用、各种代码片段),但唯一有效的方法是从Chrome中禁用网络缓存,详情请参见为什么Google Chrome不重新加载我的脚本? 我认为这不是生产环境下的解决方案,但在开发过程中可以节省您搜索的时间。问题似乎出在Chrome的缓存上,即使设置

window.location.reload(true);

在重新加载时不清除缓存。在FF上运行良好。


-1
为了通过POST请求“刷新”页面,您需要提交一个表单。您可以使用页面上已有的任何表单,也可以通过编程创建一个表单。
var myForm = document.createElement("form");
myForm.action = "/my/url.jsp"; // Or use window.location, or something else.
myForm.method = "POST";
document.body.appendChild(myForm); // Needs to be in the DOM. Is not visible.
myForm.submit();

问题是这样的: 我在页面1上提交了一个表单。它带我到了页面2。现在当我在页面2上时,如果我点击浏览器的刷新按钮,那么页面2会成功刷新(在获得确认后)。然而,如果我在页面2上放置了这个: <a href="javascript:history.go(0);">Reload</a> 并且如果我点击它,那么我无法重新加载页面,因为它没有发送页面1表单的必要参数。 我的问题是,是否可能实现与浏览器的刷新按钮相同的功能? - Purav Shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接