jquery form表单.serialize()序列化后中文乱码问题原因及解决
原因:.serialize()自动调用了encodeURIComponent方法将数据编码了
解决方法:调用decodeURIComponent(XXX,true);将数据解码
例如:
var params = jQuery("#formId").serialize(); // http request parameters.
params = decodeURIComponent(params,true);
再进行编码
params = encodeURI(encodeURI(params));
后台
params = java.net.URLDecoder.decode(params , "UTF-8");
问题解决。
附js示例
function submitForm(){
var params= jQuery('#form').serialize();
params= decodeURIComponent(params,true);
params= encodeURI(encodeURI(params));
jQuery.ajax({
url:"test.shtml?r="+ Math.random(),
type:"post",
data:params,
success:function(msg){
alert(msg);
}
});
}