1

我需要多次使用一个函数,并希望避免一遍又一遍地编写相同的方法。我想使用 $.getJSON() 响应并将其存储在将返回的 var 中。这样我就可以调用该方法。

function startFilter(){
            var grid = [];
            $.getJSON('data/gridData1.json',function(json){
                grid = json;
                console.log(grid);
            });
            console.log(grid);
            return grid;
        }

网格变量设置在 .getJSON 内部,但不在 .getJSON 外部。任何想法为什么,如果需要更多信息,请告诉我?

4

2 回答 2

3

Ajax 调用是异步的。这是事物在时间中的定位方式。

function startFilter(){
    var grid = []; // (1)
    $.getJSON('data/gridData1.json', function(json){  // (2)
        grid = json;  // (5)
        console.log(grid); // (6)
    });
    console.log(grid);  // (3)
    return grid;  // (4)
}

您应该使用回调来构建您的逻辑:

function startFilter(callback) {
    $.getJSON('data/gridData1.json', callback);
}

var grid = [];
startFilter(function(json) {
    grid = json;
    // your logic here
});
于 2013-09-24T18:28:09.160 回答
0
var grid;

function startFilter(dataReady ){
        var grid = [];
        $.getJSON('data/gridData1.json',function(json){
            grid = json;

             dataReady () ; 
        });
        console.log(grid);
        return grid;
    }

startFilter ( function () {
console.log(grid);
} ) ; 
于 2013-09-24T18:29:48.687 回答