gpt4 book ai didi

jquery - Ajax - 处理 jquery $.when 中的 404 错误

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

所以我有以下代码:

function ajax1(url) {
return $.ajax({
url: url
});
}

function ajax2(url) {
return $.ajax({
url: url
});
}

function ajax3(url) {
return $.ajax({
url: url
});
}

function ajax4(url) {
return $.ajax({
url: url
});
}

然后,我运行 Ajax 调用并使用 $.when 访问每个调用返回的数据:

$.when(ajax1(url), ajax2(url), ajax3(url), ajax4(url)).done(function(a1, a2, a3, a4){

});

现在,假设其中一个 Ajax 调用 ajax2 将返回 404 错误。

即使返回 404 错误,如何才能阻止脚本执行并仍然返回某些内容(例如 false,使用 a2 变量进行访问)?

提前非常感谢您。

最佳答案

jQuery 3 延迟是 Promises A+符合。这意味着您可以将 catch() 添加到请求 promise

每当您从 catch()返回时,它都会解析 Promise,并且返回的任何内容都将传递给下一个 then()链条

function ajax1(url) {
return $.ajax({
url: url
})
.then(data => data)
.catch(resolveFailure);
}

function resolveFailure(jqXhr) {
// return whatever you want here. I added the status in case that is of interest
// could return `false` or string or whatever
// can also log any issues back to server if needed
return {
error: true,
status: jqXhr.status,
statusText: jqXhr.statusText
};
}

var req = ajax1('https://api.myjson.com/bins/l9ywp'),
req2 = ajax1('https://httpbin.org/FAIL'),
req3 = ajax1('https://api.myjson.com/bins/l9ywp');

// could also replace `$.when with `Promise.all()`
$.when(req, req2, req3).then(function(r1, r2, r3) {
// validate the arguments based on whatever you return in the catch()
console.log('r1', r1);
console.log('r2', r2);// object returned from catch()
console.log('r3', r3);
});
.as-console-wrapper {max-height: 100%!important;top:0}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

关于jquery - Ajax - 处理 jquery $.when 中的 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48197597/

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