我正在尝试将数据集加载到茉莉花中进行测试...但是,我似乎无法打电话 总是 通过“ IT”表示测试,等到JSON呼叫完成后才使用其数组。我尝试使用AjaxStop函数无济于事。有任何想法吗 ?

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

 });
有帮助吗?

解决方案

您可以使用$ .ajax(),而不是使用$ .getjson,并将异步设置为false在您的参数中,然后使用.parsejson():

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

    }
});

我会警告您,将异步设置为false可能会导致浏览器出现,如果呼叫需要很长时间,但是它将阻止任何其他JavaScript或jQuery代码执行,直到呼叫完成并加载数据(假设呼叫(假设该呼叫)成功)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top