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

时间:2011-03-09 03:11:53

标签: jquery

从jQuery 1.5开始,所有jQuery的AJAX方法都返回一个jqXHR对象,该对象提供.error().success().complete()方法。

.success().complete()之间的区别是什么?

4 个答案:

答案 0 :(得分:218)

.success()只有在您的网络服务器以200 OK HTTP标头响应时才会被调用 - 基本上当一切都很好时。

然而,无论ajax调用是否成功,.complete()都会总是被调用 - 可能输出错误并返回错误 - .complete()仍会被调用。

值得一提的是,.complete()会在 .success()被调用后被称为 - 如果它对你很重要。

答案 1 :(得分:9)

当服务器返回200状态代码时,将调用

success(),无论结果如何,始终在请求完成时调用complete()

答案 2 :(得分:0)

服务器返回 200 状态代码时调用

success()complete()后调用success()。我看到了一些不同之处:

success()上,您无法获取使用$.ajax()并设置dataType:xml的xml响应字符串 但是在complete()中,你可以使用

获取readed xml文档的字符串格式
$.ajax({
url:'??',
dataType:'xml',
oncomplete: function(data,status){
console.log(data.responseText);
}
})

答案 3 :(得分:0)

服务器返回success()时调用

success status code,例如:200201等。

请求完成后,始终调用

complete()。 (无论如何,这是服务器的成功/错误响应。)


所以

  • 当服务器发出success响应时:complete()并且调用success()
  • 当服务器发出error响应时:complete()并且调用error()

出于什么目的,您可以使用complete():假设在beforeSend()中显示了loader image,而在complete()中则可以隐藏loader image。 / p>