2015-04-28 2 views
1

У меня есть вызов ajax нескольким различным службам. Я знаю, что мой массив var log перезаписывается каждым последующим вызовом, но я не могу понять, как изменить логику, чтобы добавить следующий массив вместо перезаписи.jquery ajax loop только возвращает последнее значение

$.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(); 

       } 
      })); 

ответ

4

Это просто проблема с прицелом. Вы обновляете «var log» внутри функции $ .ajax success() (и, таким образом, перезаписываете его). Объявите var log вне $ .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); 

     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(); 

    } 
})); 
+0

да бревно вар = войти || []; каждый раз создает новый объект –

+0

спасибо! В этом есть смысл. Я думал, что var log = log || []; создаст новый журнал, если журнал не был определен. – byrdr

+0

Использование глобальной переменной: log = log || []; Это просто, когда вы обновляете переменную с помощью «var log», которую вы переписываете. –

Смежные вопросы