jQuery ajax 返回的對象的 done/complete/success 以及 error/fail 有什麼區別?


The jqXHR objects returned by $.ajax() as of jQuery 1.5 implement the Promise interface, giving them all the properties, methods, and behavior of a Promise (see Deferred object for more information). These methods take one or more function arguments that are called when the $.ajax() request terminates. This allows you to assign multiple callbacks on a single request, and even to assign callbacks after the request may have completed. (If the request is already complete, the callback is fired immediately.) Available Promise methods of the jqXHR object include:

  • jqXHR.done(function( data, textStatus, jqXHR ) {});

    An alternative construct to the success callback option, the .done() method replaces the deprecated jqXHR.success()method. Refer to deferred.done() for implementation details.

  • jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});

    An alternative construct to the error callback option, the .fail() method replaces the deprecated .error() method. Refer to deferred.fail() for implementation details.

  • jqXHR.always(function( data|jqXHR, textStatus, jqXHR|errorThrown ) { });

    An alternative construct to the complete callback option, the .always() method replaces the deprecated .complete()method.

來自:jQuery.ajax()


jQuery.ajax返回的是jqXHR對象,它是瀏覽器原生XMLHttpRequest對象的一個超集,並實現了Promise介面。使它擁有了Promise的所有屬性,方法和行為。為了讓回調函數名字統一,便於$.ajax中使用,jqXHR也提供了.error(),.success(),.complete(),但是由於版本的升級相應的.fail(),.done(),.always()代替了前三個方法,使用方式和解釋並沒有什麼區別。

jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});

一種可供選擇的請求失敗時調用的回調選項構造函數,.fail()方法取代了的過時的.error()方法。

jqXHR.done(function(data, textStatus, jqXHR) {});

一種可供選擇的請求成功時調用的回調選項構造函數,.done()方法取代了過時的.success()方法。

jqXHR.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) { });

一種可供選擇的請求結束時調用的回調選項構造函數,.always()方法代替了過時的.complete()方法,

當請求成功時,該函數的參數與.done()的參數一致;當請求失敗時,該函數的參數與.fail()的參數一致。

具體內容可以看下中文api

jQuery.ajax()


實際上是沒有什麼區別,不過是引用最新api,像ES6里的Promise


推薦閱讀:

通過jQuery的load()函數載入進頁面的內容為何js就失效了?
拋開 React 學習 React 第一部分
有沒有推薦設UI計師學的代碼,例如xcode,JQ等輕體量上手快的IDE,主要為了實現動效和前端對接?
新手如何學習 jQuery?
為什麼有很多人明明基礎都不會,卻一直在討論jQuery?

TAG:前端開發 | JavaScript | Ajax | jQuery |