AJAX和200 OK消息:是否需要完成服务器端呼叫?

时间:2013-03-27 02:44:45

标签: jquery ajax wordpress

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

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

现在我的印象是,只要发出jQuery.ajax({type:'POST'调用,我就可以立即关闭页面,但我发布的服务器端仍会收到并处理数据,无论发生什么事情都会发生。

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

是的,如果您向服务器发送ajax请求,而不是关闭页面,服务器将完成请求(执行代码)。

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

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

这是一个异步请求,因此它将在后台执行代码。执行此行代码并不意味着您已发送请求。它有一些在后台运行的阶段。

  1. jQuery会解析你的代码,看看你想要什么,
  2. 它将创建一个xmlhttprequest对象,而不是设置选项。
  3. 最后它会向服务器发送请求。
  4. 因此,如果您在第三阶段之前立即关闭页面,则不会发送请求。

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

    jQuery.ajax()中,您必须设置async false才能使其同步,就像这样,

      jQuery.ajax({
        url: Url,
        success: function(r) {},
        async:false
      });