.success()和.complete()之间的区别?


103

在jQuery 1.5中,所有的jQuery的AJAX方法返回一个jqXHR提供对象.error().success().complete()方法。

.success()和之间有什么区别.complete()


2
@nix是否有一个链接,更详细地描述了不推荐使用的内容?
neoneye 2012年

api.jquery.com/jQuery.ajax/上的@neoneye Ctrl + F“弃用通知”
ThatGuy

Answers:


223

.success()仅当您的网络服务器以200 OKHTTP标头响应时才被调用-基本上一切正常。

然而,.complete()永远被调用无论Ajax调用是成功还是失败-也许它输出的错误,并返回一个错误- .complete()仍然会被调用。

值得一提的是,.complete()被调用之后 .success()将被调用-如果这对您很重要。


11

success()服务器返回200状态代码complete()时调用,无论请求结果如何,始终在请求完成时调用。


1

success()服务器返回200状态代码时complete()调用,在之后调用success()。我看到一些区别:

success()你不能得到XML响应字符串,你开始使用$.ajax()并设置dataType:xml 但是complete()你可以得到readed XML文档的字符串格式使用

$.ajax({
url:'??',
dataType:'xml',
oncomplete: function(data,status){
console.log(data.responseText);
}
})

0

success()服务器返回时调用success status code,例如:200201等等。

complete()请求完成后总是调用。(无论如何,这是服务器的成功/错误响应。)


所以,

  • success服务器有响应时:complete()并被success()调用。
  • error服务器有响应时:complete()并被error()调用。

您可以出于什么目的使用complete():假设在其中beforeSend()显示loader image,并且complete()可以将其隐藏loader image

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.