0

我有以下代码从外部源中提取一些数据:

    $(document).ready(function(){
        $.getJSON('mydata.json',function(data) {
            var ned = data.names.ned;
            return(ned);
        });
    });

在我的 JSON 中,我有:

    {
      "names": {
               "ned": "Eddard Stark",
               "jon": "Jon Snow",
               "tyrion": "Tyrion Lannister"
               }
    } 

我想知道如何在另一个函数上使用变量“ ned ”。另外,我想进一步设置其他变量,如“jon”和“tyrion”以便以后使用,但我不能让它们传递给另一个函数。

JSON 回调必须在页面加载时完成,才能正确使用某些应用程序功能,这就是它准备好文档的原因。

4

2 回答 2

2

您可以使用 jquery 轻松做到这一点$.Deferred

function getNed()
{
    return $.getJSON('mydata.json').pipe(function(data) {
        var ned = data.names.ned;
        return ned;
    });
}

getNed().done(function(ned) {
    alert(ned);
});
于 2012-06-13T23:06:25.167 回答
0

一种快速/简单的方法是声明一个全局变量,然后在获得它时用来自 json 调用的数据填充它。

<script> 
var myJsonData; //Make this a very unique name, as you may conflict with other variables in plugins and such.
$(document).ready(function(){
    $.getJSON('mydata.json',function(data) {
        myJsonData = data;
        var ned = data.names.ned;
        return(ned);
    });
});
</script>

但是,请注意,您的 getJSON 调用可能需要很长时间,并且您必须在myJsonData使用之前仔细检查该变量是否未定义。或者,您可以从 json 回调中调用某种初始化函数。

于 2012-06-13T23:04:02.340 回答