1

这似乎是最奇怪的事情:

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 对象不同?

4

1 回答 1

2

不完全的。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);
    });

哪个更整洁。

于 2014-05-19T21:52:35.253 回答