3

非常に単純な ajax リクエストがあります。

$.get(url, data)
   .done(function () { })
   .fail(function () { })

でエラーが発生した場合url、たとえば「500」などのステータス コードが返されます。どうやら、jQuery はこの時点でオブジェクトの約束を考慮しjqxhrます。私の質問は 2 つあります。.done.fail

デフォルトでは、.failajaxに関していつトリガーされますか?このデフォルトを変更する方法はありますか?

第二に、悪いリクエストに対して特別な処理を行う唯一の方法は、次のようなものです。

.done(function (msg, tm, jqxhr) {
   if (jqxhr.status < 200 || jqxhr.status >= 300) performFailure();
});

「悪い」と見なされる応答を見つけて処理するより良い方法はありますか?

4

3 に答える 3

0

.ajax関数のドキュメントを確認してください。エラーに対する非常に優れたハンドラーがあります。http://api.jquery.com/jQuery.ajax/ get()の代わりにこの関数を使用することをお勧めします。(このページからわかるように、2つは基本的に同じです:http://api.jquery.com/jQuery.get/);

コードの例は次のとおりです。

     $.ajax({
       url: url,
       data: data,
       error: /*error function*/,
       success: /*success function*/,
     });
于 2012-04-06T19:44:41.617 に答える
0

jQuery .get()ドキュメントから:

jQuery.get() を使用したリクエストがエラー コードを返す場合、スクリプトがグローバルな .ajaxError() メソッドも呼び出していない限り、エラーは表示されずに失敗します。あるいは、jQuery 1.5 以降では、jQuery.get() によって返される jqXHR オブジェクトの .error() メソッドもエラー処理に使用できます。

(私のものを強調)

私はエラー処理をあまり行っていませんが、エラー状態を解消するために ajaxError を呼び出す必要があるようです。

于 2012-04-06T19:41:04.413 に答える
0

これをさらに調べたところ、jQuery は実際には.fail()正しく使用されているようです。問題は、サーバーが特定のエラーに対して 200 を出力していたことです。つまり、これはそもそも jQuery の問題ではありません。

于 2012-04-06T19:51:42.717 に答える