【问题标题】:How to access properties of returned jQuery jqxhr object if returned from sucess() [duplicate]如果从 sucess() 返回,如何访问返回的 jQuery jqxhr 对象的属性 [重复]
【发布时间】:2014-07-08 00:05:33
【问题描述】:

这似乎是最奇怪的事情:

var mah_dataz = $.get("link/to/request");
console.log(mah_dataz);

/* result is the whole shebang: 
  Object {
    abort: function (a){var b=a||u;return d&&d.abort(b),c(0,b),this}
    always: function (){return e.done(arguments).fail(arguments),this}
    complete: function (){if(i){var c=i.length;!function f(b){ab.each(b,function(b,c)
    readyState: 4
    ... you get the idea...
    responseText: "{'returns': {'wellFormatted':'JSON', 'cross':'MyHeart'}}" */

但是!

var mah_dataz = $.get("link/to/request");
console.log(mah_dataz.responseText)
// result is: 
// undefined

这很快就被标记为重复并被驳回,但没有人完全回答这个问题,更不用说发布指向重复的链接了。问题是:

为什么会这样?为什么在第一种情况下返回整个对象,然后在第二种情况下,当引用其属性时,它是未定义的?我不明白为什么这种对象的行为从根本上(或看起来如此)不同于其他 javascript 对象?

【问题讨论】:

  • 对于那些选择将其标记为重复并且甚至没有阅读实际问题的人,请重新打开问题或回答它,因为我绝对,绝对卡住并且从出现的内容中发疯,从我渴望但早期的眼睛,成为 javascript 绕道而行。我已经查看了您链接的答案;我看不出它如何回答我的问题(我可以看到它有很多背景信息,并回答了相关问题,但不是我的实际问题)。
  • 它是console.log that mocks youresponseText 属性在访问时为 undefined,但在控制台中查看对象时具有数据。
  • 好的,thankyou 非常感谢,我对@BenjaminGruenbaum 感到非常愤怒,尽管他显然是一个重要的贡献者,但今天完全忽略了我的实际问题。我确实看到这现在如何成为链接答案中描述的问题,感谢您花时间帮助我解决问题。
  • 实际上,在对console.log 问题发表评论后,我也会为该副本关闭它。我想知道我们是否应该将这种情况纳入规范问题。
  • 嗯,据我所知——现在——它隐含地由规范问题解决。但问题在于格式,或者问题的呈现方式;规范问题以与我描述的问题的实际体验不明显相关的方式解释了正在发生的事情(即,似乎是具有无法访问属性的对象)。找到一种方法将这个问题的表象与解决方案的现实联系起来,imo 肯定会使这个重复。

标签: javascript jquery ajax jqxhr


【解决方案1】:

不完全是。 get 返回一个延迟而不是回调的结果

var mah_dataz;
var deferred = $.get("link/to/request", function(jqxhr_ob) { mah_dataz = jqxhr_ob});

如果你只是在回复之后你可以做......

$.get("link/to/request")
    .done(function(response) {
        console.log(response);
    });

哪个更整洁。

【讨论】:

  • 这两种都试过了,都没有我想要的结果。
  • 实际打印到控制台的内容是什么?你希望它打印什么?
  • 未定义,未定义,未定义——但@bergi 在评论我的问题时,终于在这方面为我指明了正确的方向。不过,谢谢。
  • 如果您逐字复制,可能是因为拼写错误。糟糕,回调中的响应拼写错误。已经更新了,我的坏:o(
  • 不,这确实是@bergi 描述的问题; console.log() 确实是在骗我。这是一个同步性问题,我现在可以理解它,但对于非 AJAX 专家来说,它确实看起来很奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 2016-06-09
  • 1970-01-01
相关资源
最近更新 更多