我确信这些信息存在,但我的谷歌搜索功能让我失败了。
我想知道的是,如果我在锚标签点击事件处理程序中触发XHR请求,该请求是否保证会被发送?我并不关心处理回复,但我不知道请求是否可以在导航之前永远离开unsent
状态。
例如,假设我想跟踪所有锚标记点击,所以我做了类似这样的事情:
$("a").on("click", () => $.ajax({ url: "/track_link_click", method: "POST" });
是否存在事件处理程序中的请求永远不会被发送的情况?我可以阻止位置变化发生,直到收到回复,但我更不愿意。
提前致谢!
答案 0 :(得分:1)
根据设计,我们无法保证,但在实践中,我非常确定所有浏览器都会至少将请求发送出去。
我建议你研究navigator.sendBeacon()
,它是为这种类型的东西而设计的。它的目的是保证请求被发送,即使它必须在页面卸载后发生。
https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon
它在IE中不受支持,但尚未在Safari中支持,因此您需要依赖常规的AJAX方法作为后备。