2014-11-08 2 views
0

Я пытаюсь подтолкнуть некоторые данные, val.related и val.keywords к массиву keywords. Но после этого Массив все еще пуст. Есть идеи ?Push JSON данные в JQuery Array

//get data. 
var getProjectsApi = function() { 

    //keywords. 
    var keywords = []; 

    //get data via json. 
    $.getJSON('projects/api', function(data) { 

     //loop over keywords. 
     $.each(data.keywords, function(i, val) { 

      //push content to keywords-array. 
      keywords.push('<li data-related="' + val.related + '">' + val.keyword + '</li>'); 
     }); 

     console.log(keywords); 
    }); 

    //return the array. 
    return keywords; 
} 
+0

проверить серверную сторону, если это действительно значения returg – roullie

+0

Да, это возвращает эти значения. – muro

+0

Я рекомендовал, чтобы вы всегда проверяли возвращенные данные перед использованием: 'if (typeof data! = 'Undefined')'. То же самое для 'data.keywords'. – gskema

ответ

0

Вы делаете асинхронный вызов async, поэтому ключевые слова не заполняются. Вам нужно подождать, пока массив не будет заполнен значением. Итак, вы сделали свой вызов ajax синхронным. Для этого вы можете использовать метод ajaxSetup перед вызовом метода getJson.

$.ajaxSetup({async:false}); 
+0

Не возвращается null. Я получаю данные. Его единственное, когда im толкает его, массив не заполняется. – muro

+0

ok. Это не сработало с моей первой попытки, но теперь это зависит от вашего решения. Спасибо. – muro

+0

Я не имел в виду, что данные идут нулевым, я теперь редактировал свое сообщение. Я просто говорю, что после создания ajax-вызова он переходит к следующей строке. –