somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【jQuery】ajaxとエラー時の処理

仕事でもよくajaxをよく使っていますが、error時の処理が浸透していないです。正常時と処理と共にエラー対処方法のメモをしておきます。

ajax

詳しくはここを参照。jQuery.ajax(options) - jQuery 日本語リファレンス

リクエスト前の処理

beforeSendを使用して、リクエストの際に送るデータの入力チェックを行ったりします。入力値にエラーがあった場合には、falseを返すことでリクエスト前に処理を中断できます。他には、データロードのgifを表示する際にも使います。あのローディング画像を出せるだけでうれしくなりますね。

正常時

まず、error時の処理ですが、簡易ajax処理を行えるloadやget、postなどでは行えません。きちんとajax関数を使用し、errorプロパティにコールバック関数を指定しましょう。

error処理の前に

まず、error時の処理ですが、簡易ajax処理を行えるloadやget、postなどでは行えません。きちんとajax関数を使用し、errorプロパティにコールバック関数を指定しましょう。

errorと判断される場合

ステータスが404や500などの見つからなかったり、失敗であったりする場合に、errorの処理が行われます。つまり、サーバ側でステータスを指定してレスポンスを返せばOKです。

errorプロパティ

下記のような形で使うことができます。

通信に失敗した際に呼び出されるAjax Eventです。引数は3つで、順にXMLHttpRequestオブジェクト、エラー内容、補足的な例外オブジェクトを受け取ります。第2引数には "timeout", "error", "notmodified", "parsererror"などが返ります。
error: function(XMLHttpRequest, textStatus, errorThrown) {
  // 通常はここでtextStatusやerrorThrownの値を見て処理を切り分けるか、
  // 単純に通信に失敗した際の処理を記述します。
  this; // thisは他のコールバック関数同様にAJAX通信時のオプションを示します。
}

そのた注意

cacheプロパティは必ずfalseにしておきましょう。IE8ではキャッシュが有効になってしまい、意図しているデータが取得できないことがよくあります。