通过javascript重新加载页面:避免“回发”警告

时间:2010-09-08 09:06:56

标签: javascript jquery postback reload

我通过javascript触发页面重新加载,使用以下内容:

window.location.reload(true);

但是,在某些情况下(以前的回发),浏览器会给我以下警告:“要再次显示网页,网络浏览器需要重新发送您之前提交的信息......”。

是否有任何方法可以避免此消息并且无论如何都要进行回发,因为这可能会让用户感到困惑?如果我需要通过其他方式重新加载页面,那就这样吧。

6 个答案:

答案 0 :(得分:6)

如果你想刷新页面而不包括发布数据,而不仅仅是回发试试

window.location = window.location.href;

答案 1 :(得分:2)

您尝试再次执行的请求是POST请求,因此发出警告。您可以确保仅重新加载通过GET请求获取的资源,或者 - 或者 - 通过<form>方法提交隐藏的POST(从而模拟重新加载保证不会高速缓存)。

您可能已经知道警告与HTTP动词中的idempotence(缺乏副作用)有关。 GET(以及其他)(至少应该)被认为是幂等的,而POST请求允许在服务器上进行更改。因此,客户端应提示用户验证他/她是否打算再次执行操作。

答案 2 :(得分:2)

在进行重新加载时,我认为没有任何方法可以在没有消息的情况下进行回发。

不过,重装是什么?如果是再次提交POST信息,我建议您使用javascript通过ajax或隐藏表单提交手动提交数据。

答案 3 :(得分:1)

唯一的办法就是阻止它重新使用params。使用 window.location = window.location

答案 4 :(得分:0)

在页面内保留状态数据的一种方法是使用URL上的片段标识符,例如。 #filter1,#filter2,然后使用jQuery的方便hashchange插件执行代码(即,使用新的结果重新加载页面的相关部分)当url片段通过onhashchange事件更改时。它也很好,因为可以为不同的状态添加书签和缓存。

http://benalman.com/projects/jquery-hashchange-plugin/

答案 5 :(得分:0)

后:

mysql_query("insert into table (id_item, quantity, cost) values($m, '$amount', '$cost')");

把:

header("Location: index.php");

然后使用jquery重新加载您的页面,您将无法获得“... Web浏览器需要重新发送信息...”警告。