2011-01-11 6 views
1

Я пытаюсь загрузить набор данных в жасмин для своих тестов, таких как ... Однако, как его звонок json, я не могу показаться всегда получить тест, обозначенный буквой "it «дождаться завершения вызова JSON до использования его массива. Я пробовал использовать функцию ajaxStop безрезультатно. Есть идеи ?JQuery ajax load JSON в модульных тестах

describe("simple checks", function() { 

    var exampleArray = new Array(); 

beforeEach(function(){ 

    $(document).ajaxStop(function() { 
     $(this).unbind("ajaxStop"); 

     $.getJSON('/jasmine/obj.json', function(data) { 

     $.each(json.jsonattr, function(i, widgetElement) {      
      exampleArray.push(new widget(widgetElement)); 
      }); 
      }); 
     }); 

}); 


    it("use the exampleArray", function() { 

    doSomething(exampleArray[0]); // frequently this is coming up as undefined 

}); 

ответ

3

Вместо того, чтобы использовать $ .getJSON, вы можете использовать $ .ajax() и установите асинхронной ложь в ваших параметров, а затем разобрать JSON с помощью .parseJSON():

 
$.ajax({ 
    url: '/jasmine/obj.json', 
    async: false, 
    dataType: 'json', 
    success: function(data) { 
     var jsonvar = $.parseJSON(data); 
     //your code here! 

    } 
}); 

Я буду предупредите, что установка async на false может привести к тому, что браузер будет заморожен, если вызов занимает много времени, но это предотвратит выполнение любого другого кода JavaScript или jQuery до завершения вызова и загрузки данных (при условии, что вызов является успех).

+0

jqueryrocks вы, безусловно, делаете рок-мерси beaucoup для вас! – wmitchell

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

  • Нет связанных вопросов^_^