var test = $.getJSON( 'data/mydata.json' );
console.log( test );
console.log( JSON.stringify(test) );
第一条日志语句输出:
第二行输出:
{"readyState":1}
我的数据怎么了?我真的必须传递一个函数才能获取 responseJSON(请注意,我不是在处理生产代码)?
但最重要的是,这是否可能。如果我愿意,我不知道该怎么做。
var test = $.getJSON( 'data/mydata.json' );
console.log( test );
console.log( JSON.stringify(test) );
第一条日志语句输出:
第二行输出:
{"readyState":1}
我的数据怎么了?我真的必须传递一个函数才能获取 responseJSON(请注意,我不是在处理生产代码)?
但最重要的是,这是否可能。如果我愿意,我不知道该怎么做。
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 对象的超集。这个由 $.getJSON() 返回的 jQuery XHR 对象或“jqXHR”实现了 Promise 接口,为它提供了 Promise 的所有属性、方法和行为(有关更多信息,请参阅 Deferred 对象)。jqXHR.done()(用于成功)、jqXHR.fail()(用于错误)和 jqXHR.always()(用于完成,无论是成功还是错误)方法采用在请求终止时调用的函数参数。有关此函数接收的参数的信息,请参阅 $.ajax() 文档的 jqXHR 对象部分。
jQuery 1.5 中的 Promise 接口还允许 jQuery 的 Ajax 方法,包括 $.getJSON(),在单个请求上链接多个 .done()、.always() 和 .fail() 回调,甚至可以在之后分配这些回调请求可能已完成。如果请求已经完成,则立即触发回调。