0

我想通过使用 HTML 标记将用户重定向到新页面并将一些数据发布到另一个页面;所以我有这段代码

<html>
    <head>
        <script source="jquery.js"></script>
        <meta http-equiv="Refresh" content="0; url=http://current.domain/some_page.html">
    </head>
    <body>
        <script>
            $.ajax({
                type: "POST",
                url: "http://current.domain/another_page.html",
                data: data,
                success: success,
                dataType: dataType
            });
        </script>
    </body>
</html>

我正在我的本地主机中测试代码,所以这个过程非常快,我不会注意到任何东西。但我想知道浏览器何时处理 AJAX 帖子:

  • A - 重定向之前:必须先完成 AJAX 发布,然后是重定向。
  • B - 与重定向同时:浏览器将重定向并仍然在后台发布数据。
  • C - 重定向后:AJAX 帖子将在浏览器成功重定向到新页面后完成。

有人可以给我一个解释吗?我个人更喜欢 B 和 C 情况,如果 AJAX 发布需要很长时间,用户不必等待。

4

1 回答 1

0

这不太可能可靠地工作。您询问 AJAX 操作是否会在重定向之前、期间或之后发生:答案是它可能在之前发生,这取决于浏览器及其版本。您已经设置了所谓的竞态条件,很难知道首先会发生什么:浏览器会注意到您希望它首先重定向,还是您希望立即运行 AJAX 操作?

Location在这个页面上使用PHP使用header重定向,然后对目标页面进行AJAX操作会更可靠。您可能还会考虑是否需要 AJAX 操作:如果您在生成目标页面时正在运行服务器端脚本,您可以同时进行 AJAX 工作,这样可以节省 HTTP 调用。

顺便说一句,当您运行 时$.ajax(),您可能应该将它包装在一个 DOM 就绪的处理程序中,特别是如果您打算从表单元素传递值。

于 2013-04-21T17:17:30.670 回答