Как получить доступ к свойствам возвращенного объекта jQuery jqxhr, если он возвращен из sucess()
Это кажется самой странной вещью:
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?
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);
});
Что еще аккуратнее.