这有效:

function getDataJSON() {
    var queryString = "https://www.examplesite.com/someJSON.json";

    $.getJSON(queryString, function(data) {
        doStuffWithData(data)
    });
 }

 function doStuffWithData(JSON) {
     // some code that refers to JSON
 }

 getDataJSON();


但这会抱怨在doStuffWithData()中某个地方未定义变量(JSON):

function getDataJSON(callback) {
    // Gets share data and runs callback when received
    var queryString = "https://www.examplesite.com/someJSON.json";

    $.getJSON(queryString, function(data) {
        if(typeof callback === "function") {
            callback(data);
        }
    });
 }

 function doStuffWithData(JSON) {
     // some code that refers to JSON
 }

getDataJSON(doStuffWithData());


我可能做错了什么? $ .getJSON()调用需要一两秒钟,因此我确实需要等待并在此之后做一些事情。我认为问题出在代码执行顺序上,但是可能是我误解了如何正确地将数据传递给回调函数。

如果我可以将数据加载到其他所有函数都可以访问的变量中,那就更好了。

最佳答案

这个:

getDataJSON(doStuffWithData());


应该是这样的:

getDataJSON(doStuffWithData);


否则,它将立即调用该函数,并尝试将函数的结果传递到getDataJSON中。

09-10 05:02
查看更多