在jQuery中Ajax的Post提交中文亂碼的解決方案


引言: 在jQuery的Ajax POST請求中,進行請求,其中的中文在后台,顯示為亂碼,該如何解決呢?

 

  問題的引入:    

var regid = $('#oregion').combobox('getValue');        

 //var sname = $('#sname').val();            

var sname = encodeURI($('#sname').val(),"UTF-8");            

if(regid!=""&&regid!='undefined'){                

$.ajax({                    

async: true,                    

type : "POST",                    

dataType : "json",                              

url : "<%=request.getContextPath() %>/secretary/service?regid="+regid+"&sname="+sname,                    

success : function(data) {                        

if(data.mes!=""&&data.mes!=null){                            

$.messager.alert('Warning',data.mes);                             

return false;                        

}                    

}                

});            

}        

}  

以上的代碼在FF/Chrome中,可以正常傳遞中文,但是在IE下,則存在問題,在后台輸出的信息為亂碼。  

 

問題嘗試辦法:  

1.  設置了  contentType: "text/plain; charset=utf-8",  問題依然存在  

2.  重新檢查了ajax代碼所在的jsp頁面,皆為使用utf-8,但是問題依然存在  

3.  在后台的java代碼中,強制使用utf-8、gbk、gb2312的編碼轉換,  問題依然存在   經過分析,判斷其可能與瀏覽器或者JQuery中的內容傳輸有關,目前也無法准確的確定。

 

解決的辦法:       前段:encodeURI($(dom).val(), "UTF-8");      使用encodeURI進行編碼  

  后端Java代碼: 

    URLDecoder.decode(inputStr,"UTF-8"):  后端代碼針對前段傳遞過來的字符串,進行解碼。  

 

總結:       最后就可以針對Ajax Post請求傳遞過來的字符串信息,就可以正常顯示中文了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM