jQuery.ajaxのテンプレ
id:stokiwaくんにjQuery.ajaxSetupってのがあるよって教えてもらった。ありがとうv
$(document).ready( function() { // ajaxの通信の初期化 $.ajaxSetup( { type: 'post', beforeSend : function(XMLHttpRequest) { // 送信前の処理 // alert('送信します(これはうざい)'); }, dataFilter: function(data, type) { // 受信したデータを解析 if ("json" == type) { // JSONの場合何かできないかな } return data; }, error: function(XMLHttpRequest, textStatus, errorThrown) { if (XMLHttpRequest.status == 404) { alert('404: ページが見つかりません'); } // ・・・略 } }); });
ajaxSetupの引きすにはjQuery.ajaxに渡すのと同じものが使える。一番最初にajaxSetupを行うことで次からの、jQuery.ajaxやjQuery.post, jQuery.getなんかはここで設定されたオプションが利用される。(オプションは↓ここを参照くださいませ)
http://docs.jquery.com/Ajax/jQuery.ajax#options
なので、システムで共通して使いたい部分に関しては最初にセットアップしておくといい。とくにエラーの時の処理なんて大体同じになるはずだから、上記の様にしとくといいかも。うーん。便利。
ちなみに、jquery-1.3.2.jsのajaxSetupは以下の様になってるだけ。
ajaxSetup: function( settings ) { jQuery.extend( jQuery.ajaxSettings, settings ); },
ここで出てきた、jQuery.ajaxSettingsとは
ajaxSettings: { url: location.href, global: true, type: "GET", contentType: "application/x-www-form-urlencoded", processData: true, async: true, /* timeout: 0, data: null, username: null, password: null, */ // Create the request object; Microsoft failed to properly // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available // This function can be overriden by calling jQuery.ajaxSetup xhr:function(){ return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); }, accepts: { xml: "application/xml, text/xml", html: "text/html", script: "text/javascript, application/javascript", json: "application/json, text/javascript", text: "text/plain", _default: "*/*" } },
こんなふうになってるので、これを置き換えてるんだね。そして、jQuery.ajaxの中ではこのjQuery.ajaxSettingsの値を使ってるので一度初期化(jQuery.ajaxSetup)を行うと次からの通信はここの設定が利用されるってわけですね。(ちなみにjQuery.post, jQuery.getは内部でjQuery.ajax使ってたので、これらについても同様。)