.success()と.complete()の違いは?


103

jQueryの1.5の時点で、すべてのjQueryのAJAXの方法は返すjqXHR提供するオブジェクトを.error().success().complete()方法。

違いは何である.success()とは.complete()


2
@nix非推奨のものについて詳しく説明するリンクはありますか?
neoneye

@neoneye Ctrl + F api.jquery.com/jQuery.ajax/の「サポート終了のお知らせ」
ThatGuy

回答:


223

.success()ウェブサーバーが200 OKHTTPヘッダーで応答する場合にのみ呼び出されます-基本的にすべてが問題ない場合。

しかし、.complete()常に多分それはエラーを出力し、エラーが返さ- - .completeを()がまだ呼び出されますAJAX呼び出しが成功したかどう関係なく呼び出されます。

それがあなたに重要である場合-それが呼び出さ.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 imagecomplete()非表示にしたりできるとしますloader image

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.