为什么 jquery ajax 文档的意思是 "For backward compatibility with XMLHttpRequest"
Why does the jquery ajax documentation mean when it says "For backward compatibility with XMLHttpRequest"
我正在查看 jQuery 的 ajax 方法的当前版本 (1.11.2) 的文档。它在 jqXHR
对象的解释前加上以下行:
For backward compatibility with XMLHttpRequest
, a jqXHR
object will expose the following properties and methods:
为什么是这样 "backwards compatibility"? XMLHttpRequest
是否已弃用?如果是这样,如果不通过 jqXHR
对象访问 HTTP 响应的正确方法是什么?
注意:似乎很多关于 .ajax()
的博文告诉您使用 success
和 error
,尽管它们已被弃用。我应该做更像的事情吗:
$.ajax( ... )
.done(function(data, textStatus, jqXHR) {
console.log("success: " + jqXHR.responseText );
})
.fail(function(jqXHR) {
console.log( "error: " + jqXHR.status + " (" + jqXHR.responseText + ")" );
});
Why is this "backwards compatibility"?
因为很久以前,jQuery的ajax
方法直接返回了XMLHttpRequest
对象。
And if so, what is the proper way to access the HTTP response if not through the jqXHR object?
通过回调函数的参数success
and/or promise的done
.
It seems that a lot of blog posts about .ajax() tell you to use success and error, despite that they are deprecated.
不,他们不是。您将 jqXHR.success
/ jqXHR.error
方法与 ajax 选项中的 success
和 error
callbacks 混淆了。前者暂时出现在 API 中,确实已被弃用;后者一直在 API 中,并且没有被弃用。这很好:
$.ajax({
url: "/whatever",
success: function(data) {
// Do something with `data`
},
error: function() {
// Handle error
},
complete: function() {
// Handle completion
}
});
如果您愿意,可以使用较新的 promise 内容:
$.ajax({
url: "/whatever"
}).done(function(data) {
// Do something with `data`
}.fail(function() {
// Handle error
}).always(function() {
// Handle completion
});
但 success
/error
/complete
选项并未弃用。
我正在查看 jQuery 的 ajax 方法的当前版本 (1.11.2) 的文档。它在 jqXHR
对象的解释前加上以下行:
For backward compatibility with
XMLHttpRequest
, ajqXHR
object will expose the following properties and methods:
为什么是这样 "backwards compatibility"? XMLHttpRequest
是否已弃用?如果是这样,如果不通过 jqXHR
对象访问 HTTP 响应的正确方法是什么?
注意:似乎很多关于 .ajax()
的博文告诉您使用 success
和 error
,尽管它们已被弃用。我应该做更像的事情吗:
$.ajax( ... )
.done(function(data, textStatus, jqXHR) {
console.log("success: " + jqXHR.responseText );
})
.fail(function(jqXHR) {
console.log( "error: " + jqXHR.status + " (" + jqXHR.responseText + ")" );
});
Why is this "backwards compatibility"?
因为很久以前,jQuery的ajax
方法直接返回了XMLHttpRequest
对象。
And if so, what is the proper way to access the HTTP response if not through the jqXHR object?
通过回调函数的参数success
and/or promise的done
.
It seems that a lot of blog posts about .ajax() tell you to use success and error, despite that they are deprecated.
不,他们不是。您将 jqXHR.success
/ jqXHR.error
方法与 ajax 选项中的 success
和 error
callbacks 混淆了。前者暂时出现在 API 中,确实已被弃用;后者一直在 API 中,并且没有被弃用。这很好:
$.ajax({
url: "/whatever",
success: function(data) {
// Do something with `data`
},
error: function() {
// Handle error
},
complete: function() {
// Handle completion
}
});
如果您愿意,可以使用较新的 promise 内容:
$.ajax({
url: "/whatever"
}).done(function(data) {
// Do something with `data`
}.fail(function() {
// Handle error
}).always(function() {
// Handle completion
});
但 success
/error
/complete
选项并未弃用。