JQueryプラグインの応用(二)
3132 ワード
今日は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具体的には以下の通りです
本は正伝で、前の段のjquery.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を混同するツールを差し上げます.