自jQuery 1.5版本起,所有的jQuery AJAX方法都返回一个
jqXHR
对象,提供.error()
、.success()
和.complete()
方法。
.success()
和.complete()
有什么区别?jqXHR
对象,提供.error()
、.success()
和.complete()
方法。
.success()
和.complete()
有什么区别?.success()
只有在你的 Web 服务器响应 200 OK
的 HTTP 头时才会被调用,基本上是一切正常的情况下。
然而,无论 Ajax 调用是否成功(可能输出了错误并返回了错误),.complete()
都将始终被调用。
值得一提的是,.complete()
将在 .success()
被调用之后 立即 被调用,如果这对你很重要的话。
2XX
,如200、201时,将调用.success。 - Roubisuccess()
当服务器返回200状态码时被调用,而complete()
无论请求的结果如何都会被调用。
success()
会在服务器返回成功状态码
,比如:200
、201
等时被调用。
complete()
总是在请求完成后被调用。(不管是从服务器得到的成功/错误响应)
成功
响应时:success()
和 complete()
被调用。错误
响应时:error()
和 complete()
被调用。例如:你可以使用 complete()
来进行以下操作:
假设在 beforeSend()
中展示了一个 loader image
,那么在 complete()
中,你可以隐藏该 loader image
。
success()
在服务器返回200状态码时调用,complete()
在success()
之后调用。我注意到一些区别:
在success()
中,您无法获取使用$.ajax()
和设置dataType:xml
时获取的xml响应字符串。但是,在complete()
中,您可以获取已读取的xml文档的字符串格式。
$.ajax({
url:'??',
dataType:'xml',
oncomplete: function(data,status){
console.log(data.responseText);
}
})