2014-05-06 47 views
0

我想访问由$ .ajax(ajaxOpts)调用的原始jqXHR对象,这可能以某种方式?我现在得到的只是一个承诺。从承诺获取初始对象

   var jqXHR = $.ajax(ajaxOpts) 
        .done(dfd.resolve) 
        .fail(dfd.reject) 
        .then(next, next); 
+0

嗯,你为什么要传递一些'dfd.resolve'和'dfd.reject'函数作为处理器的承诺? – Bergi

回答

3

docs

的jqXHR对象由$。阿贾克斯()返回的jQuery 1.5的实现 无极界面,让他们所有的属性,方法和的 行为Promise(请参阅延迟对象以获取更多信息)

您已经获得jqXHR对象(它是XMLHTTPRequest对象的超集)。它只是实现了承诺界面。

var jqXHR = $.ajax(ajaxOpts); 
console.log(typeof jqXHR.abort); 
jqXHR.done(dfd.resolve) 
    .fail(dfd.reject) 
    .then(next, next); 
+0

jqXHR console.log'd是这样的:http://imgur.com/IYgpQeB - 除此之外,它不再有任何中止方法。我如何获得原始对象? – Wesley

+1

你必须有'console.log''d你的链结果('.then()')而不是'$ .ajax'的结果 – CodingIntrigue

+2

啊,是的,'$ .ajax'的结果是' jqXHR'和'done'也会返回它,但'then'不会**返回它,它会返回一个promise对象。所以@Wesley,你的原始代码(在你的问题中)没有得到'jqXHR'对象,但是如果你像RGraham那样分解它,你会的。这可能会发光:http://jsbin.com/robuvoxe/1/edit –