【问题标题】:Reloading page through javascript: avoid the "Postback" warning通过javascript重新加载页面:避免“回发”警告
【发布时间】:2011-04-09 15:10:19
【问题描述】:

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

window.location.reload(true);

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

有没有什么方法可以避免这条消息,而只是进行回发,因为这可能会让用户感到困惑?如果我需要通过其他方式重新加载页面,那就这样吧。

【问题讨论】:

  • 编辑:最后,我解决了这个问题,不做回发,而是通过客户端重定向,并使用 Jquery 查询插件向查询字符串添加必要的参数。

标签: javascript jquery postback reload


【解决方案1】:

之后:

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

放:

header("Location: index.php");

然后使用 jquery 重新加载您的页面,您将不会收到“...网络浏览器需要重新发送信息...”警告。

【讨论】:

    【解决方案2】:

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

    window.location = window.location.href;
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        顺便说一句,重新加载是为了什么?如果是再次提交 POST 信息,建议您通过 ajax 手动提交数据或使用 javascript 隐藏表单提交。

        【讨论】:

        • 重载是为了显示更新的数据,也是为了保存状态数据(例如当用户在页面上设置了过滤器时,我想在重载时保持该过滤器处于活动状态)
        • 因此,如果您不想再次将 POST 数据发送到服务器,(这是我从您上面的回复中了解到的)在 POST 数据之后执行 303/302 重定向到查看页面在服务器端脚本中处理。如果你这样做,你可以做同样的 javascript 重新加载你正在做的事情而没有任何问题。有关重定向后 POST 解决方案的说明,请参阅此内容。 ajaxray.com/blog/2008/01/12/…
        • 感谢您的评论,我猜想有条件地执行 302 的唯一方法是服务器端,或者有什么方法可以通过 javascript 来完成?
        • 从逻辑上讲,它在服务器端 + 为此发出 303 比发出 302 更好。
        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          唯一的方法是阻止它重新发布参数。采用 window.location = window.location

          【讨论】:

          • 然而,这会在转换为GET 时丢失POST 数据(我相信)。
          猜你喜欢
          • 2018-01-06
          • 1970-01-01
          • 1970-01-01
          • 2019-01-01
          • 2021-12-15
          • 1970-01-01
          • 1970-01-01
          • 2011-06-16
          • 2019-09-29
          相关资源
          最近更新 更多