誰か助けてもらえますか?
私は違いを理解することはできませんよsuccess
と.done()
の$.ajax
。
可能であれば例を挙げてください。
誰か助けてもらえますか?
私は違いを理解することはできませんよsuccess
と.done()
の$.ajax
。
可能であれば例を挙げてください。
回答:
つまり、成功コールバック関数をajax関数から分離することで、後で元のコード(オブザーバーパターン)を変更せずに独自のハンドラーを追加できます。
こちらから詳細情報をご覧ください:https : //stackoverflow.com/a/14754681/1049184
success:
パラメータと.success()
メソッドの使用には違いがありますjqXHR
。後者は非推奨ですが、前者はOPが求めていたものです。
success
AJAX呼び出しが成功した場合にのみ起動します。つまり、最終的にHTTP 200ステータスを返します。error
失敗したcomplete
場合、および成功に関係なくリクエストが終了したときに発生します。
上のjQueryの1.8でjqXHR
オブジェクト(によって返された$.ajax
)success
で置き換えたdone
、error
とfail
とcomplete
を有しますalways
。
ただし、古い構文でAJAXリクエストを初期化できるはずです。したがって、これらは同様のことを行います:
// set success action before making the request
$.ajax({
url: '...',
success: function(){
alert('AJAX successful');
}
});
// set success action just after starting the request
var jqxhr = $.ajax( "..." )
.done(function() { alert("success"); });
この変更は、jQuery 1.5の遅延オブジェクトとの互換性のためです。据え置き(現在Promise
、ChromeとFXで完全なネイティブブラウザーサポートを備えている)を使用すると、非同期アクションをチェーンできます。
$.ajax("parent").
done(function(p) { return $.ajax("child/" + p.id); }).
done(someOtherDeferredFunction).
done(function(c) { alert("success: " + c.name); });
この一連の関数は、で取得するコールバックのネストされたピラミッドよりも維持が簡単ですsuccess
。
ただし、代わりにを使用done
するPromise
構文が優先されるようになりましたthen
。
$.ajax("parent").
then(function(p) { return $.ajax("child/" + p.id); }).
then(someOtherDeferredFunction).
then(function(c) { alert("success: " + c.name); }).
catch(function(err) { alert("error: " + err.message); });
これは採用する価値があります。これはasync
、await
拡張機能によって構文(およびエラー処理)が改善されるためです。
try {
var p = await $.ajax("parent");
var x = await $.ajax("child/" + p.id);
var c = await someOtherDeferredFunction(x);
alert("success: " + c.name);
}
catch(err) {
alert("error: " + err.message);
}
success
、jQuery 1.8ではに置き換えられましたdone
。これらは同じように機能しますがdone
、他のjQueryとの一貫性が高くなっています。
.done
はこれを使用しませんでしたPromise
。新しいプロジェクトではconst response = await fetch(...)
代わりに使用します。
.success()
Webサーバーが200 OK HTTPヘッダーで応答する場合にのみ呼び出されます-基本的にすべてが問題ない場合。
done()にアタッチされたコールバックは、遅延オブジェクトが解決されると発生します。fail()にアタッチされたコールバックは、遅延オブジェクトが拒否されたときに発生します。
promise.done(doneCallback).fail(failCallback)
.done() has only one callback and it is the success callback
success
リクエストが成功したときに呼び出されるコールバックで、$.ajax
呼び出しの一部です。done
は実際にjqXHR
はによって返されるオブジェクトの一部であり、jQuery 1.8で$.ajax()
置き換えsuccess
られます。