我对几个不同的服务进行了 ajax 调用。我知道我的数组 var log
正在被每次连续调用覆盖,但我不知道如何更改逻辑以附加下一个数组而不是覆盖。
$.ajax($.extend({}, ajaxDefaults, source, {
data: data,
success: function(events) {
events = events || [];
var res = applyAll(success, this, arguments);
if ($.isArray(res)) {
events = res;
}
callback(events);
var log = log || [];
for (var i=0; i<events.length; i++) {
log.push(events[i]);
}
console.log(log);
},
error: function() {
applyAll(error, this, arguments);
callback();
},
complete: function(events) {
applyAll(complete, this, arguments);
popLoading();
}
}));
最佳答案
这只是一个范围问题。您正在 $.ajax success() 函数内部重新声明“var log”(从而覆盖它)。在 $.ajax 之外声明 var log 并将新结果推送到该数组中。
尝试以下操作:
var log = [];
$.ajax($.extend({}, ajaxDefaults, source, {
data: data,
success: function(events) {
events = events || [];
var res = applyAll(success, this, arguments);
if ($.isArray(res)) {
events = res;
}
callback(events);
for (var i=0; i<events.length; i++) {
log.push(events[i]);
}
console.log(log);
},
error: function() {
applyAll(error, this, arguments);
callback();
},
complete: function(events) {
applyAll(complete, this, arguments);
popLoading();
}
}));
关于jquery ajax循环只返回最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29908972/