从JSON文件加载数据的问题

时间:2014-02-07 22:38:04

标签: javascript json

我正在尝试将json文件的内容加载到数组中。我没有使用回调函数来确保在使用之前加载文件,而是将其编码为:

var f_file_loaded = false;
var data = null;

$.getJSON('transformation.json', function(dt){
    f_file_loaded = true;
    data = dt;
});

while(!f_file_loaded){
    // Loop until file is loaded
}

console.log('data loaded', data);

然而,这会阻止浏览器,并且f_file_loaded似乎不会在任何时候出现。我的代码有什么问题?

3 个答案:

答案 0 :(得分:0)

while(!f_file_loaded){无法正常工作......它只会创建一个无限循环。

您需要使用promise()界面。

$.when($.getJSON()).done(function() {
    // file is loaded, execute whatever code
});

答案 1 :(得分:0)

那是因为$ .getJSON是一个异步调用。

你应该按照这些方针做点什么:

function data_loaded(data) {
    console.log('data loaded', data);
}

$.getJSON('transformation.json', function(dt){
    data_loaded(dt);
});

答案 2 :(得分:0)

如果你想同步而不是异步调用,那么使用这个

上面的代码

$.ajax("transformation.json", {
dataType:'json',
async:false,
success:function(dt) {
data = dt;
}
});

下面的代码将在下载数据后继续执行