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側ではエラー処理はしてませんけども(沈黙するだけ)。