$.when为同时查询的所有多个ajax调用返回Deferred对象.
@H_403_9@解决方法
如果一切都成功.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) }) }) });