gpt4 book ai didi

javascript - AJAX 调用在使用 Backbone.js 完成之前被中止

转载 作者:行者123 更新时间:2023-11-30 06:34:28 24 4
gpt4 key购买 nike

我关注了这个 answer关于如何在页面重定向时中止所有 AJAX 请求。它基本上使用 ajaxSend 将 xhr 请求对象添加到数组,然后使用 ajaxComplete 从数组中删除该对象,然后如果页面被重定向,它将循环遍历该数组并中止浏览器仍在等待的每个请求。

这适用于所有使用 $.ajax({}) 的普通 AJAX 请求。但是,如果像 model.save() 这样调用 Backbone AJAX 请求,则 window.onbeforeunload 函数会在任何事情发生之前执行,并导致 model.save() 在事件发送到服务器之前中止。

有人对如何解决此问题或为什么调用 window.onbeforeunload 函数有任何想法吗?

这是我从链接答案中获得的代码:

var xhrPool = [];
$.xhrPool = {};
$.xhrPool.abortAll = function () {
$.each(xhrPool, function (idx, jqXHR) {
jqXHR.abort();
});
xhrPool.length = 0;
};

$(document).ajaxSend(function (e, jqXHR, options) {
xhrPool.push(jqXHR);
});

$(document).ajaxComplete(function (e, jqXHR, options) {
xhrPool = $.grep(xhrPool, function (x) {
return x != jqXHR;
});
});

window.onbeforeunload = function () {
$.xhrPool.abortAll();
};

最佳答案

您当时是否尝试过使用等待标志来保存?

像这样模型.保存(数据,{等待:真});

希望这对您有所帮助。

关于javascript - AJAX 调用在使用 Backbone.js 完成之前被中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com