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を使った方がよさげですね。
それで実装します!

Created at: 
2007/12/09 01:21:39

nobu

最近はjQuery.ajaxを使う事が多くなりましたです。
jQueryはホントによく出来てると思います。

Created at: 
2007/12/09 02:00:34

kjirou

こういう風に、パイなんとか以外のネタを増やしてくれるとうれしいです。

Created at: 
2007/12/09 09:49:51

nobu

あははw
申し訳ないです。

Created at: 
2007/12/09 14:53:00

Add Comment

Add Comment