2016-03-18 2 views
0

У меня есть следующий код, который работает только в режиме отладчика с точкой клюва на console.log. массив pageData пуст, когда он компилируется, в конце концов, каждый цикл не компилируется. Я получаю только 10 объектов с вызовом ajax, что если я получаю 100 объектов, как остановить отладчик до загрузки массива. и это происходит во всех браузерахкод работает только в режиме отладки с точкой останова в consol.log не работает иначе

//ajax call , 
      function(responses) { 
       responses.data.sort(function(a,b){ 
        var aa=a.were; 
        var bb=b.were; 
        return bb-aa; 
       });   
       $.each(responses.data, function (index, value) { 
         var pageData1={ 
         were: value.were, 
         id: value.id, 
         name: value.name, 
         category: value.category, 
         address: value.location.street, 
         city:value.city, 
         talk: value.talki, 
         link:value.link 
         } 
        pageData.push(pageData1); 
        }); 
      }); 
      console.log(pageData); 
    $.each(pageData, function(key,value){ 
     table=table+"<tr><td><a href="+pageData[key].link+">"+pageData[key].name+"</a> </td><td>"+pageData[key].were+" </td><td> "+pageData[key].address+"</td><td> "+pageData[key].talk+"</td></tr>"; 
     }); 
    $("#tabledata").show(); 
    $("#messages").append(table); 

редактировать: function(responses) { responses.data.sort(function(a, b) { var aa = a.were; var bb = b.were; return bb - aa; }); $.each(responses.data, function(index, value) { var pageData1 = { were: value.were, id: value.id, name: value.name, category: value.category, address: value.location.street, city: value.city, talk: value.talki, link: value.link }; pageData.push(pageData1); }); console.log(pageData); $.each(pageData, function(key, value) { table += "<tr>" + "<td><a href="+pageData[key].link+">"+pageData[key].name+"</a> </td>" + "<td>"+pageData[key].were+" </td>" + "<td> "+pageData[key].address+"</td>" + "<td> "+pageData[key].talk+"</td>" + "</tr>"; }); $("#tabledata").show(); $("#messages").append(table); });

ответ

2

Ваш function(responses) только вызывается, когда завершается Аякса.

Javascript не дожидался его завершения и запустит console.log, прежде чем данные вернутся, и вы не получите ничего во время выполнения.

В режиме отладки вы останавливаете его на console.log (перед запуском), предоставляя время вызова async ajax для заполнения и заполнения переменной pageData.

Весь код, который опирается на эти данные, ДОЛЖЕН прибыть после функции $ .each, чтобы все они вызывались вместе при возврате данных.

+0

, который был настолько полезен ниже, является моей модификацией кода. Спасибо, @wainage – flyingkandi

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