1

我们正在开发一个跟踪系统,该系统使用 WordPress AJAX API 在 WordPress 环境中连续进行 3 次 ajax 调用,并在第 3 次调用时刷新页面。

我注意到有时我的数据输入尝试在后端失败,我假设(可能不正确)发生这种情况是因为我们的最后一个 Ajax 调用在前一个得到 200 OK 清除之前完成,并中断了连接,这意味着数据永远不会被存储。

现在我的印象是,一旦发出 jQuery.ajax({type: 'POST' 调用,我就可以立即关闭页面,并且我发布到的服务器端仍然会接收并处理数据,不管是什么发生父连接。

但是我的数据测试显示一些数据没有得到一致的输入。在先前的 AJAX 调用以 200OK 清除之前,我认为这不应该与我的最终 AJAX 调用完成(并重新加载页面)有关吗?

谢谢你的帮助!

4

1 回答 1

1

是的,如果您将 ajax 请求发送到服务器,那么您可以关闭页面,服务器将完成请求(执行代码)。

但是有一点你必须知道,你无法知道你的请求是否到达了服务器。

jQuery.ajax("htpp://",{type: 'POST'});

这是一个异步请求,所以它会在后台执行代码。执行这行代码并不代表你已经发送了请求。它有一些在后台工作的阶段。

  1. jQuery 会解析你的代码,看看你想要什么,
  2. 它将创建一个 xmlhttprequest 对象,而不是设置选项。
  3. 最后它将向服务器发送请求。

因此,如果您立即关闭页面,在第三阶段之前,将不会发送请求。

我建议您发送同步 ajax 请求并等待刷新/关闭页面的任何响应。因为同步 ajax 请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。

jQuery.ajax()中,您必须设置 async false 以使其同步,如下所示,

  jQuery.ajax({
    url: Url,
    success: function(r) {},
    async:false
  });
于 2013-03-28T10:06:07.767 回答