JQuery从JSON请求返回变量

时间:2012-06-13 22:57:21

标签: json jquery

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

    $(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回调必须在页面加载时完成才能正确使用某些应用程序功能,这就是文档就绪的原因。

2 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分: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回调中调用某种初始化函数。