gpt4 book ai didi

jquery - 从 ajaxError 中中止 ajax load()

转载 作者:行者123 更新时间:2023-12-01 06:34:08 25 4
gpt4 key购买 nike

我的代码中有很多地方都像这样加载片段:

$('<div />').load('/some/thing/', function() { /* put it somewhere */ });

我还有一个 ajaxError 处理程序:

$(document).ajaxError(function(event, jqxhr, settings, exception) {
if (jqxhr.status = 401) {
return alert('401!!');
}
if (jqxhr.status = 404) {
return alert('404!!');
}
return alert('boo!');
});

但是,即使 ajaxError 被触发,与加载关联的处理程序仍然会被触发。有没有办法从 ajaxError.

取消“已完成”处理程序(用于触发加载处理程序)。

我已经尝试过 Deferred,但问题似乎是我无法访问 completeDeferred 对象。在 jQuery ajax.js 中:

jqXHR.complete = completeDeferred.add;

但是,.add() 方法没有用。如果我能以某种方式调用底层延迟对象的 .empty() 方法就好了..

有什么想法吗?

编辑:我不关心中止 HTTP 请求。完成了,很好。我只想阻止回调(我通过 .load() 附加的)触发。

最佳答案

您必须从 .load 切换到更通用的 AJAX 方法,或者从事件处理程序中检测失败。

检测失败:

$('<div />').load('/some/thing/', function(response, status, xhr) {
if (status === "error") return;
// your existing code goes here
});

要使用更通用的方法:

$.get("/some/thing/").done(function(response) {
$("<div />").html(response) // etc etc
});

关于jquery - 从 ajaxError 中中止 ajax load(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695776/

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