2012-01-18 8 views
12

でオーバーライドエラー:404が発生した場合jQuery.ajaxSetup:私はデフォルトのjQueryのAJAXのエラー処理のために、次のコードを持っているからstatusCode

$.ajaxSetup({ 
    error : function(jqXHR, textStatus, errorThrown) { 
     alert("Error: " + textStatus + ": " + errorThrown); 
    }, 
    statusCode : { 
     404: function() { 
      alert("Element not found."); 
     } 
    } 
}); 

しかし、両方の機能をupcalledされます。最初エラー、その後、からstatusCodeを2回連続してアラートが表示されます。

どのようにこの動作を防止しからstatusCodeがupcalledされなかった場合にのみ、エラーコールバックを取得しますか?

+0

statucode.404を削除すると、 –

+1

いいえ。 404の場合は特定のメッセージを、そうでない場合はデフォルトのメッセージが必要です。 – weekens

+4

私はあなたと一緒に@ウィークンズです。 statusCodeエントリに「else」がないか、またはstatusCodeハンドラを最初に呼び出し、必要に応じてジェネリックエラーハンドラを抑制する何らかの方法がないと、statusCodeオプション全体が役に立たないIMOになります。すべてのエラーコードに対してstatusCodeのエントリがあり、妥当でない場合にのみ使用できます。 jQueryの人々がこのアーキテクチャを再考してくれることを願っています。 – enigment

答えて

23

どのように自分のエラーハンドラでステータスコード404のチェックについてはどうですか?

$.ajaxSetup({ 
    error : function(jqXHR, textStatus, errorThrown) { 
     if (jqXHR.status == 404) { 
      alert("Element not found."); 
     } else { 
      alert("Error: " + textStatus + ": " + errorThrown); 
     } 
    } 
}); 
11

これを試してみてください:

$.ajaxSetup({ 
error : function(jqXHR, textStatus, errorThrown) { 
    if(jqXHR.status === 404) { 
     alert("Element not found."); 
    } else { 
     alert("Error: " + textStatus + ": " + errorThrown); 
    } 
} 
}); 
+1

+1も同様です。しかし、==この場合は===より良いようです。 – weekens

関連する問題