Events 通过单击链接同时发送的AJAX请求的可靠性如何?

Events 通过单击链接同时发送的AJAX请求的可靠性如何?,events,jquery,hyperlink,Events,Jquery,Hyperlink,我们有一个用PHP编写的网上商店。在一个分类页面上,我们想集成一个第三方点击跟踪器:每次点击一篇文章时,我们都需要向服务器发送一个AJAX请求,而服务器又会向第三方跟踪服务器发送一个REST请求 所以说我们的产品链接看起来像 <a href="product.php?id=1234" class="product" data-id="123">Product A</a> 这有一个明显的缺点,即产品点击后会出现延迟,因为浏览器必须等待AJAX请求完成 因此,我们考虑了一种

我们有一个用PHP编写的网上商店。在一个分类页面上,我们想集成一个第三方点击跟踪器:每次点击一篇文章时,我们都需要向服务器发送一个AJAX请求,而服务器又会向第三方跟踪服务器发送一个REST请求

所以说我们的产品链接看起来像

<a href="product.php?id=1234" class="product" data-id="123">Product A</a>
这有一个明显的缺点,即产品点击后会出现延迟,因为浏览器必须等待AJAX请求完成

因此,我们考虑了一种fire-and-forget方法,即不等待AJAX请求的响应:

$('a.product')。在('click',函数(e)上{
e、 预防默认值();
var a=$(本);
$.getJSON(trackingUrl,{id:a.data('id')});
window.location.href=a.attr('href');
});
我们不会在这里等待成功的响应,希望浏览器无论如何都能完成我们的请求,即使我们在发送AJAX请求后立即离开当前页面


即使浏览器已经离开原始页面,也可以安全地假设请求将完成吗?

实际上,当您单击“a”标记时,浏览器将发送请求,但您的请求完成的概率非常低。有时,请求在不同的internet速度和服务器上的通信量上需要相当长的时间。因此,强烈建议不要采用这种方法

如果在请求完成之前将浏览器重定向到URL,则有50%的几率实际向服务器发出了请求。如果请求是在重定向发生之前发出的,则您的工作已完成,因为响应不是必需的,但如果不是,则浏览器放弃该请求并停止它


希望这有帮助。请随意询问更多信息。

为什么不使用第一个示例调用
e.preventDefault()
,将重定向移到AJAX post行之外(不要等待它完成)。那样的话,它必须先开火。谢谢,我会更新问题的。但我仍然怀疑,即使浏览器已经加载了新页面,该请求是否真的完成了。