前回の続き、というか補足メモ。

jQueryで作るAjaxな検索フォーム(テスト) | mutter

JavaScript: 検索部分

function sampleSearchFilckr () {
  var word = $('#sampleSearchWord').val();
  if(!word) {
    alert('検索語を入力してください');
    return false;
  }
//検索
  $.post(
    '/sample/flickr',
    {"q": word},
    function(data, status) {
    //searchに成功したら結果を表示する
      $('#sampleSearchResult').html(data);
    },
    "html"
  );
}

この部分がコールバックになるわけですが、

function(data, status) {
//searchに成功したら結果を表示する
  $('#sampleSearchResult').html(data);
}

ここが評価されるのはレスポンスのHTTPステータスコードが正常のときだけなので、こうなると。

  • HTTPステータスコードでエラーを返されるとハンドリングできない
  • HTTPステータスコードを200のままでエラーメッセージ出力とかしちゃうと実行されちゃう

エラーをハンドリングするには、.error()とか.complete()とかを上手く使えば良いとの話。

jQuery.post() – jQuery API
jQuery 1.5でのAJAXの書き方: 細切れに書くことや、遅延処理が可能 - memo.yomukaku.net

なるほど。


つまり?

HTTPステータスコードはちゃんと使いましょうねという話でございました。

先のエントリで使ったFlickrのやつ(エントリの為にでっち上げたサンプル)は、エラーがあったら400とか500とか返すようにしています。まぁ、別にJavaScript側ではエラー処理はしてませんけども(沈黙するだけ)。