0
var test = $.getJSON( 'data/mydata.json' );

console.log( test );
console.log( JSON.stringify(test) );

第一条日志语句输出: 在此处输入图像描述

第二行输出:

{"readyState":1}

我的数据怎么了?我真的必须传递一个函数才能获取 responseJSON(请注意,我不是在处理生产代码)?

但最重要的是,这是否可能。如果我愿意,我不知道该怎么做。

4

1 回答 1

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 对象的超集。这个由 $.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() 回调,甚至可以在之后分配这些回调请求可能已完成。如果请求已经完成,则立即触发回调。

文档

于 2013-07-20T00:53:31.217 回答