jquery ajax循环只返回最后一个值
我对几个不同的服务进行了ajax调用。我知道每次连续调用都会覆盖我的数组jquery ajax循环只返回最后一个值,jquery,ajax,Jquery,Ajax,我对几个不同的服务进行了ajax调用。我知道每次连续调用都会覆盖我的数组var log,但我不知道如何更改逻辑以附加下一个数组而不是覆盖 $.ajax($.extend({}, ajaxDefaults, source, { data: data, success: function(events) { events = events || []; va
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($.extend({}),ajaxDefaults,source{
数据:数据,
成功:功能(事件){
事件=事件| |[];
var res=applyAll(成功、此、参数);
如果($.isArray(res)){
事件=res;
}
回调(事件);
var log=log | |[];
对于(var i=0;i这只是一个范围问题。您正在$.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();
}
}));
var log=[];
$.ajax($.extend({},ajaxDefaults,source{
数据:数据,
成功:功能(事件){
事件=事件| |[];
var res=applyAll(成功、此、参数);
如果($.isArray(res)){
事件=res;
}
回调(事件);
对于(var i=0;i这只是一个范围问题。您正在$.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();
}
}));
var log=[];
$.ajax($.extend({},ajaxDefaults,source{
数据:数据,
成功:功能(事件){
事件=事件| |[];
var res=applyAll(成功、此、参数);
如果($.isArray(res)){
事件=res;
}
回调(事件);
对于(var i=0;iyes)来说,var log=log | |【】每次都会创建一个新对象谢谢!这是有道理的。我认为var log=log | |【】会在日志未定义的情况下创建一个新日志。使用全局变量会起作用:log=log | |【】;只有当您用“var log”重新声明变量时,您才会覆盖它。是的,var log=log |【】;每次都会创建一个新对象谢谢!这很有意义。我想如果日志未定义,var log=log | |【】会创建一个新日志。使用全局变量会起作用:log=log | |【】;只有当您用“var log”重新声明变量时,您才会覆盖它。