我在处理多个jQuery Ajax调用时遇到了一些问题,有超时错误,但我怎么知道这是哪个请求错误?
$.when(ajaxDeferred1, ajaxDeferred2)
.done(function(result1, result2) {})
.fail(function(response, statusText) {
// how do I know which(ajaxDeferred1 or ajaxDeferred2) ajax call error this is?
});
[*]阿杰克斯德弗瑞德酒店**
$.ajax({
method: 'GET',
url: xxx,
timeout: 5000,
});
我知道我可以通过在每个请求上放置'.fail()'来处理错误,但是有没有比这更好的方法来处理错误呢?
更进一步,我可以这样处理吗?
$.when(ajaxDeferred1, ajaxDeferred2)
.done(function(result1, result2) {})
.fail(function(errorForRequest1, errorForRequest2) {
// handle error
});
编辑:
我想我需要把我的问题说得更清楚。在上面的例子中:
$.when(ajaxDeferred1, ajaxDeferred2)
.done(function(result1, result2) {})
.fail(function(errorForRequest1, errorForRequest2) {
// if all request has done, but one or more request has got error, return the error here then!
// So I can handle which part UI should show and which UI part I should hide due to the error!
});
我希望在所有操作都完成且没有错误时得到“done”结果,在所有操作都完成**但一个或多个请求遇到问题时得到“error”结果,并将它们一起返回到“.fail(error)”中。
3条答案
按热度按时间hiz5n14c1#
您可以使用
.always()
,并在其中检查每个promise并检查它是否已解决或失败。JSFiddle demo:https://jsfiddle.net/pr45eov1/3/
bq8i3lrv2#
我喜欢@Miguel Mota的回答。但作为替代方案,如果延迟对象失败,您将取回延迟对象。你可以在上面添加一些数据:
ibrsph3r3#
当有多个请求时使用$.完成错误处理