【问题标题】:jQuery.getJSON always returns empty objectjQuery.getJSON 总是返回空对象
【发布时间】:2016-01-17 05:46:23
【问题描述】:

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

var json;

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

有些人是这样建议的:

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

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

【问题讨论】:

  • 你了解相对路径和绝对路径的区别吗?
  • 是的,文件是相对的。

标签: javascript jquery json undefined getjson


【解决方案1】:

试试这个:

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

更新

$.getJSON() 返回的响应对象实现了 Promise 接口,为它提供了 Promise 的所有属性、方法和行为。所以在返回响应或触发 done 函数之前,json 还没有准备好。

【讨论】:

  • $.getJSON() 返回的响应对象实现了promise 接口,为它提供了promise 的所有属性、方法和行为。所以json 在返回响应或done 函数被触发之前还没有准备好。
  • 刚刚做到了。感谢您的建议
【解决方案2】:

响应被延迟。在您读取变量时,响应可能尚未响应。尝试访问函数回调中的变量,就在json = response;之后

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多