This question already has answers here:
How do I return the response from an asynchronous call?
                            
                                (38个答案)
                            
                    
                2年前关闭。
        

    

我是javascript新手。我想将Json数据存储在函数getjsonData中。我创建了一个私有函数retrieveJsonData,并将其传递给getJsonData。但我无法在onload函数之外访问json。

var DataController = (function(){
        var retrieveJsonData = function(){
            var api,ourRequest;
            api = 'http://52.69.49.40/assignment/getServiceData.php';
            ourRequest =  new XMLHttpRequest();
            ourRequest.open('GET',api);
            ourRequest.onload = function(){
                obj = JSON.parse(ourRequest.responseText);
                getJsonData(obj);
            }
            ourRequest.send();
        }


        var getJsonData = function(object){
            return object;
        }

        return{
            AjaxObject:function(){
                getJsonData();
                console.log(getJsonData());
            }
        }


    })();

最佳答案

您的getJsonData使用一个参数,并返回该参数的值。这就是所谓的“身份函数”,它什么都不做。您可能希望将数据存储在某个地方,可以通过将函数替换为:

var data = undefined;
function getJsonData() {
  if (arguments.length > 0) {
    data = arguments[0];
  }
  return data;
}


但是,它不是一个很好的功能,因为它没有达到锡盒上的要求。它声称要获取JSON数据,但也会存储它。

10-08 03:13