这是我的代码:
var source;
source = $.getJSON(url, function(json) {
return console.log(json);
});
上面是返回完整的 jQuery 对象与我请求的 JSON。响应看起来像这样:
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
isRejected: function () {
isResolved: function () {
overrideMimeType: function ( type ) {
pipe: function ( fnDone, fnFail ) {
promise: function ( obj ) {
readyState: 4
responseText: "{'Hello':'World'}"
setRequestHeader: function ( name, value ) {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( doneCallbacks, failCallbacks ) {
__proto__: Object
有人知道我做错了什么吗?我已经处理这个问题几个小时了:(
最佳答案
AJAX 是异步的,source
不能等于您请求的 JSON,因为它还不可用。 jQuery.getJSON
将返回它创建的用于处理请求的 jqXHR
对象,然后跑掉并检索响应。
$.getJSON(url, function(json) {
// deal with response here
});
响应可用时(一段时间后),回调(您传递的函数)被执行,因此您可以通过第一个参数(您我们调用了 json
)。
您可以通过尝试以下操作来了解这一点:
console.log('1');
$.getJSON(url, function(json) {
console.log('2');
});
console.log('3');
您会看到您的控制台将读取 1、3,然后一瞬间(即执行 HTTP 请求的时间)、2;这显示了 getJSON 响应返回但未完成,脚本继续执行,然后回调在一段时间后被调用。
关于javascript - jQuery $.get 返回完整的对象与我需要的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7794965/