为什么responseText在这里未定义?

the*_*ben 6 ajax jquery responsetext

$.ajax({
  url: 'http://jsonplaceholder.typicode.com/posts/1',
  method: 'GET',
}).done(function(data){
  console.log(data);
  console.log(data.responseText);
});
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我理解为什么console.log(data.responseText);返回undefined?

http://clarkben.com/ajaxtesting/

编辑:好的,所以看起来数据不是jqXHR对象.如果将整个$ .ajax语句分配给变量,那么该变量是一个jqXHR对象,因此可以通过这种方式访问​​它.我不知道为什么传入.done的函数的数据不是jqXHR对象.

var theRequest = $.ajax({
    url: 'http://jsonplaceholder.typicode.com/posts/1',
    method: 'GET',
}).done(function(data){
        console.log(data);
        console.log(theRequest.responseText);
  });
Run Code Online (Sandbox Code Playgroud)

the*_*ben 4

好吧,最终我在 jqXHR 文档中找到了答案:

jqXHR.done(函数(数据,textStatus,jqXHR){});

.done() 方法是成功回调选项的替代构造,它取代了已弃用的 jqXHR.success() 方法。请参阅 deferred.done() 了解实现细节。

所以现在下面的代码可以工作:

$.ajax({
    url: 'http://jsonplaceholder.typicode.com/posts/1',
    method: 'GET',
}).done(function(data, textStatus, jqXHR){
        console.log(data);
        console.log(jqXHR.responseText);
  });
Run Code Online (Sandbox Code Playgroud)

最终到达那里!