对为什么 .done() 不传入 jqXHR 对象感到困惑?
Puzzled as to why .done() not passing in the jqXHR object?
var theRequest = $.ajax({
url: 'http://jsonplaceholder.typicode.com/posts/1',
method: 'GET',
}).done(function(data){
console.log(data);
console.log(theRequest.responseText);
});
我的理解是否正确,在 .done()
方法中传递给函数的 data
应该是从 $.ajax()
返回的 jqXHR
对象要求?
我认为下面的代码会起作用,但它不起作用,因为 data
没有 responseText
属性,我认为它会起作用,因为我认为它应该是jqXHR
对象从 $.ajax()
请求返回?
$.ajax({
url: 'http://jsonplaceholder.typicode.com/posts/1',
method: 'GET',
}).done(function(data){
console.log(data);
console.log(data.responseText);
});
Is my understanding correct that the data that is passed in to the function within the .done() method should be the jqXHR object that is returned from the $.ajax() request?
不是,data
将是请求返回的数据。来自 the documentation:
jqXHR.done(function( data, textStatus, jqXHR ) {});
An alternative construct to the success
callback option, the .done()
method replaces the deprecated jqXHR.success()
method. Refer to deferred.done()
for implementation details.
...我承认这还不够彻底。 :-) 但请注意显示的函数签名中的三个参数:data
、textStatus
和 jqXHR
。如果您在选项中使用它,这些与 success
函数相同,因此它们的文档很有用:
Type: Function( Anything data, String textStatus, jqXHR jqXHR )
A function to be called if the request succeeds. The function gets passed three arguments: The data
returned from the server, formatted according to the dataType
parameter or the dataFilter
callback function, if specified; a string describing the status; and the jqXHR
(in jQuery 1.4.x, XMLHttpRequest) object.
.done()
方法接收三个参数:data
、textStatus
和 jqXHR
。 data
是来自 AJAX 请求的响应;如果您使用 dataType: 'json'
,它将是解析 JSON.
的对象
responseText
属性 在 jqXHR
参数中。应该是:
.done(function(data, textStatus, jqXHR) {
console.log(data);
console.log(jqXHR.responseText);
});
两条日志信息应该是一样的。
如果您看到 .done
原型,则第三个参数将是 jqXHR
而第一个参数将是 data
作为响应返回。
jqXHR.done(function( data, textStatus, jqXHR ) {});
An alternative construct to the success callback option, the .done()
method replaces the deprecated jqXHR.success() method. Refer to
deferred.done()
for implementation details.
.done
是文档中提到的 .success
的替代方法。
因此,如果将 jqXHR
作为第 3 个参数包含在 .done
中,则可以获取 jqXHR
var theRequest = $.ajax({
url: 'http://jsonplaceholder.typicode.com/posts/1',
method: 'GET',
}).done(function(data){
console.log(data);
console.log(theRequest.responseText);
});
我的理解是否正确,在 .done()
方法中传递给函数的 data
应该是从 $.ajax()
返回的 jqXHR
对象要求?
我认为下面的代码会起作用,但它不起作用,因为 data
没有 responseText
属性,我认为它会起作用,因为我认为它应该是jqXHR
对象从 $.ajax()
请求返回?
$.ajax({
url: 'http://jsonplaceholder.typicode.com/posts/1',
method: 'GET',
}).done(function(data){
console.log(data);
console.log(data.responseText);
});
Is my understanding correct that the data that is passed in to the function within the .done() method should be the jqXHR object that is returned from the $.ajax() request?
不是,data
将是请求返回的数据。来自 the documentation:
jqXHR.done(function( data, textStatus, jqXHR ) {});
An alternative construct to the
success
callback option, the.done()
method replaces the deprecatedjqXHR.success()
method. Refer todeferred.done()
for implementation details.
...我承认这还不够彻底。 :-) 但请注意显示的函数签名中的三个参数:data
、textStatus
和 jqXHR
。如果您在选项中使用它,这些与 success
函数相同,因此它们的文档很有用:
Type:
Function( Anything data, String textStatus, jqXHR jqXHR )
A function to be called if the request succeeds. The function gets passed three arguments: The
data
returned from the server, formatted according to thedataType
parameter or thedataFilter
callback function, if specified; a string describing the status; and thejqXHR
(in jQuery 1.4.x, XMLHttpRequest) object.
.done()
方法接收三个参数:data
、textStatus
和 jqXHR
。 data
是来自 AJAX 请求的响应;如果您使用 dataType: 'json'
,它将是解析 JSON.
responseText
属性 在 jqXHR
参数中。应该是:
.done(function(data, textStatus, jqXHR) {
console.log(data);
console.log(jqXHR.responseText);
});
两条日志信息应该是一样的。
如果您看到 .done
原型,则第三个参数将是 jqXHR
而第一个参数将是 data
作为响应返回。
jqXHR.done(function( data, textStatus, jqXHR ) {});
An alternative construct to the success callback option, the .done() method replaces the deprecated jqXHR.success() method. Refer to
deferred.done()
for implementation details.
.done
是文档中提到的 .success
的替代方法。
因此,如果将 jqXHR
作为第 3 个参数包含在 .done
jqXHR