1. 程式人生 > >jquery $("#form").serialize()傳中文亂碼解決方法

jquery $("#form").serialize()傳中文亂碼解決方法

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);

       }

    });

}