我们正在开发一个跟踪系统,该系统使用WordPress AJAX API在WordPress环境中进行3次ajax调用,并在第3次调用时刷新页面。
我注意到有时我的数据输入尝试在后端失败并且我假设(可能不正确)发生了这种情况,因为我们的最终Ajax调用在前一个获得200 OK之前完成,并且断开连接,这意味着数据永远不会被存储。
现在我的印象是,只要发出jQuery.ajax({type:'POST'调用,我就可以立即关闭页面,但我发布的服务器端仍会收到并处理数据,无论发生什么事情都会发生。
但是我的数据测试显示一些数据没有得到一致输入。我是否认为这不应该与我最后的AJAX调用完成(并重新加载页面)之前的关系,之前的AJAX调用是否会被200OK清除?
感谢您的帮助!
答案 0 :(得分:1)
是的,如果您向服务器发送ajax请求,而不是关闭页面,服务器将完成请求(执行代码)。
但有一点你必须知道,你不知道你的请求是否到达服务器。
jQuery.ajax("htpp://",{type: 'POST'});
这是一个异步请求,因此它将在后台执行代码。执行此行代码并不意味着您已发送请求。它有一些在后台运行的阶段。
因此,如果您在第三阶段之前立即关闭页面,则不会发送请求。
我建议您发送同步ajax请求并等待刷新/关闭页面的任何响应。因为同步ajax请求可能会暂时锁定浏览器,所以在请求处于活动状态时禁用任何操作。
在jQuery.ajax()中,您必须设置async false才能使其同步,就像这样,
jQuery.ajax({
url: Url,
success: function(r) {},
async:false
});