var test = $.getJSON( 'data/mydata.json' );
console.log( test );
console.log( JSON.stringify(test) );
第一个日志语句输出:
第二行输出:
{"readyState":1}
我的数据发生了什么变化?我是否真的必须传递一个函数才能获取responseJSON(注意我没有使用生产代码)?
但最重要的是,这是可能的吗?如果我愿意,我不知道如何做这样的事情。
答案 0 :(得分:3)
test
这里是jQuery XHR
对象,而不是您返回的数据。要获取返回的数据,请尝试:
$.getJSON( 'data/mydata.json' ,function(data){
console.log( data);
console.log( JSON.stringify(data) );
});
或更推荐的方式:
$.getJSON( "data/mydata.json").done(function(data) {
console.log( data);
console.log( JSON.stringify(data) );
});
从jQuery 1.5开始,所有jQuery的Ajax方法都返回了一个超集 XMLHTTPRequest对象。这个jQuery XHR对象,或“jqXHR”, $ .getJSON()返回实现Promise接口,给它 Promise的所有属性,方法和行为(请参阅Deferred 对象获取更多信息)。 jqXHR.done()(成功), jqXHR.fail()(用于错误)和jqXHR.always()(用于完成,是否 成功或错误)方法采用在何时调用的函数参数 请求终止。有关这个论点的信息 函数接收,请参阅$ .ajax()的jqXHR对象部分 文档。
jQuery 1.5中的Promise接口也允许使用jQuery的Ajax方法, 包括$ .getJSON(),链接多个.done(),. aways()和 .fail()对单个请求进行回调,甚至分配这些回调 请求可能已完成后的回调。如果请求是 已经完成,回调立即被触发。