jQuery.getJSON 总是 returns 空对象

jQuery.getJSON always returns empty object

我一直在寻找一种方法来从 JSON 文件中包含一个对象,我发现有几页总结了如何使用 $.getJSON(),甚至这里有一些答案,但 none 已经奏效了。有人建议我这样做:

var json;

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

有些人这样建议:​​

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

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

响应已延迟。在您读取变量时,响应可能尚未响应。尝试在 json = response;

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

试试这个:

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 在返回响应或触发 done 函数之前尚未准备好。