JQueryプラグインの応用(二)


今日はjQuery.Formと言いますが、jQuery.Formの公式サイトはhttp://jquery.malsup.com/form/
jQuery.Formというと、まずAjaxデータ転送の文字化けの問題を話さなければなりません.Ajaxデータ転送コードはUTF-8です.プログラム級コードを設定しても、ページ級コードを設定しても、JqueryはUTF-8の符号化方式を使って過去に伝えます.もしGBKを採用すれば、GB 2312方式はできます.簡単のために、JQueryのソースコードから着手する必要があります.
1、jQuery 1.2.6文字化けの解決方法
フォーラムで見つけられます.http://www.iteye.com/topic/339793具体的には以下の通りです

 param: function( a ) {
        var s = [];

        // If an array was passed in, assume that it is an array
        // of form elements
        if ( a.constructor == Array || a.jquery )
            // Serialize the form elements
            jQuery.each( a, function(){
                s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent(encodeURIComponent( this.value )) );
            });

        // Otherwise, assume that it's an object of key/value pairs
        else
            // Serialize the key/values
            for ( var j in a )
                // If the value is an array then the key names need to be repeated
                if ( a[j] && a[j].constructor == Array )
                    jQuery.each( a[j], function(){
                        s.push( encodeURIComponent(j) + "=" + encodeURIComponent(encodeURIComponent( this )) );
                    });
                else
                    s.push( encodeURIComponent(j) + "=" + encodeURIComponent(encodeURIComponent( jQuery.isFunction(a[j]) ? a[j]() : a[j] )) );

        // Return the resulting serialization
        return s.join("&").replace(/%20/g, "+");
    }
2、jQuery 1.3.2文字化けの解決方法

param: function( a ) {
	var s = [ ];
 
	function add( key, value ){
		s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(encodeURIComponent(value));
};
修正したらプログラムにstrutsのactionでjava.net.URLDecoder.decodeを使います.トランスコードを行います
本は正伝で、前の段のjquery.formコード:

<s:form id="searchForm" theme="simple" action="monitorItemListView" namespace="/monitorinfo">
	  :<s:textfield name="monItemsName" />
	<s:submit value="  " /></label>
</s:form>

$(document).ready(function() { 
  		var options = { 
  	        success : function(msg){
				//alert(msg);
				$("#item_list").html(msg);
      	    },  // post-submit callback 
  	        type : "post",        // 'get' or 'post', override for form's 'method' attribute 
  	        resetForm: true        
  	        //timeout:   3000 
  	    }; 
  	 
  	    // bind form using 'ajaxForm' 
  	    $('#searchForm').ajaxForm(options); 
  	}); 
コードはとても簡単です.見たら分かります.何か問題がありましたら、メッセージを残して検討してもいいです.最後に修正後のサポートGBKのjqueryとJqueryを混同するツールを差し上げます.