使用jQuery中的延迟对象处理多个ajax调用的不同成功和失败状态

前端之家收集整理的这篇文章主要介绍了使用jQuery中的延迟对象处理多个ajax调用的不同成功和失败状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
$.when为同时查询的所有多个ajax调用返回Deferred对象.

如果一切都成功.done()执行,如果任何一个url失败.fail()执行.

如何处理部分成功状态? (即)如果5个url被传递给$.when,如果3个成功,我们需要处理成功状态,并且2失败,我们需要处理失败状态.

$.when($.getJSON(headerUrl),$.getJSON(tasksUrl),$.getJSON(testingTrackerUrl),$.getJSON(highlightsUrl)))
    .then(function(headerData,tasksData,testingTrackerData,highlightsData) {
        printData(headerData,highlightsData);
    })
    .fail(function(data,textStatus,jqXHR) {
        console.error('Got error in '+jqXHR);
});

解决方法

尝试
var request = function (url) {
        return $.getJSON(url)
},requests = [
    headerUrl,tasksUrl,testingTrackerDataUrl,highlightsDataUrl
];
// return array of `resolved`,`rejected` jqxhr objects
$.when(
    $.map(requests,function (_request,i) {
         return request(_request)
    })
)
// do stuff with `resolved`,`rejected` jqxhr objects
.always(function (arr) {
    $.each(arr,function (key,value) {
        // `success`
        value.then(function (data,jqxhr) {
            console.log(data,jqxhr);
            printData(data)
        }
        // `error`,function (jqxhr,errorThrown) {
            console.log(jqxhr,errorThrown)
        })
    })
});

jsfiddle http://jsfiddle.net/guest271314/91Lomwr3/

猜你在找的jQuery相关文章