jQuery.getJSON始终返回空对象

时间:2016-01-17 05:46:24

标签: javascript jquery json undefined getjson

我一直在寻找一种方法来包含JSON文件中的对象,我发现有几个页面总结了如何使用$ .getJSON(),甚至还有一些答案,但没有工作过。有人建议我这样做:

var json;

$.getJSON("dir/1.json", function(response){
    json = response;
});

有些人这样建议:​​

var json = $.getJSON("dir/1.json");

这些都不奏效。当我尝试调用json的属性时,例如json.title,它只是给我一个错误,说明变量是未定义的。似乎没有其他人遇到这个问题,所以我做错了什么?

2 个答案:

答案 0 :(得分:2)

尝试使用:

var json = $.getJSON( "dir/1.json" )
    .done(function( response ) {
        json = response;
        console.log( "json variable ready" );
    })
    .fail(function() {
        console.log( "error" );
    });

<强>更新

$ .getJSON()返回的响应对象实现了promise接口,为其提供了promise的所有属性,方法和行为。因此,在返回响应或触发完成函数之前,json尚未就绪。

答案 1 :(得分:1)

延迟回复。在您阅读变量时,响应可能还没有响应。尝试在json = response;

之后访问函数回调中的变量