我有两个ajax调用,其中一个是有条件的,即
var url1Response, url2Response;
var def1 = $.ajax({
url: Url1,
success: function (response) {
url1Response= response;
}
});
var def2 = $.ajax({
url: Url2,
success: function (response) {
url2Response= response;
}
});
var defs = [];
defs.push(def1);
if (x == 1) // some condition
defs.push(def2);
$.when.apply($, defs).then(_self.callback, _self.failureCallback);
_self.callback = function (response) {
};
_self.failureCallback = function (response) {
};
当两个def都被执行时,我无法在回调输入参数中看到这两个响应。我只能看到url1Response。
有人可以帮助我如何处理这样的条件延迟语句响应,即只执行1个ajax,执行,执行但是一个失败等等?
答案 0 :(得分:0)
这是因为当您使用$.when.apply($, defs)
时,每个响应都会作为不同的参数发送到then
。所以,你可以把它当作:
_self.callback = function (response1, response2) {
};
甚至可以使用扩展语法:
_self.callback = function (...responses) {
// response is a array with all responses
};