jQuery.ajaxメモ
久々に jQuery のソースを眺めたので自分用メモ。
jQuery.post とか jQuery.get を使うと、 エラーが発生した時(404とか)に全く何も起きない。 で、そこらへんをちゃんとしたい時は jQuery.ajax を使ってね。って事みたい。
Ajaxのステータス( jQuery の)がsuccess以外だと、 jQuery.handleError を呼び出すようになっていて、 そのなかでエラーハンドラがセットされていればコールする仕組みになってる。
// jquery.js@2342あたり。
// Make sure that the request was successful or notmodified
if ( status == "success" ) {
// もろもろな処理。
} else
// エラーハンドラをコール。
jQuery.handleError(s, xml, status);
handleError はこんな感じ。
// jquery.js@2424あたり。
handleError: function( s, xml, status, e ) {
// エラーハンドラがセットされていればコール。
if ( s.error ) s.error( xml, status, e );
// globalな設定ならajaxErrorをコール。
if ( s.global )
jQuery.event.trigger( "ajaxError", [xml, s, e] );
},
エラーをちゃんと処理したい時とかは、 こんな感じで設定してやると良いみたい。
$('a').click(function ()
{
var successCallback = function (response)
{
// やりたい処理を書く。
};
var errorCallback = function (xml, status, e)
{
// エラーハンドリングを書く。
// xml == XMLHttpRequestだよ。
};
// リクエストを投げる。
$.ajax({
'type': "POST",
'url': this.href,
'data': {'hoge': 'fuga', 'hige': 'moja'},
'success': successCallback,
'error': errorCallback
});
// 画面繊維をキャンセル。
return false;
});
jQuery.ajax は設定がたくさんあってメンドクサそうに見えるものの、 ちゃんとデフォルトが設定されているので、 必要な部分だけ上書きしてやれば良いので簡単。 しかも、デフォルトが気に入らなければ jQuery.ajaxSetup を使って デフォルトを上書きすることも出来るので、 簡単に自分用の設定に出来るよ。
- Posted at:
- 2007/12/08 22:30:28
- 4 Comments
- 1 TrackBack
- Tags:
- JavaScript
- jQuery
- Trackback:
- http://humming.via-kitchen.com/2007/12/08/jquery-ajax-memo/trackback/
TrackBacks
[Django][Python][Mercurial][jQuery][CSS][その他]巡回 - 常山日記
Django Snippets: reverse() in a view decorator User post_save signal to auto create ’admin’ profile Authenticate against Active Directory Blog: [Django] カートを実装してたらはまった [Django] django で論理削除を実現してみる Normalize name and size images
- Created at:
- 2007/12/10 12:33:26
Comments
kishi-r
jQuery.postを使う気まんまんだったのですが、
そういうことであれば、
$.ajaxを使った方がよさげですね。
それで実装します!
nobu
最近はjQuery.ajaxを使う事が多くなりましたです。
jQueryはホントによく出来てると思います。
kjirou
こういう風に、パイなんとか以外のネタを増やしてくれるとうれしいです。
nobu
あははw
申し訳ないです。