AJAX中GET跟POST方式乱码解决方案

AJAX中GET和POST方式乱码解决方案

GET方式
页面:
 var tuiName=document.getElementById('demo_tempaltename').value;
 var url="card.do?method=findTableUiDictByUiname&tuiname="+tuiName;
 createXmlHttp();                        //创建XmlHttpRequest对象
 xmlHttp.onreadystatechange = writeMsg;
 xmlHttp.open("GET", url, true);
 xmlHttp.send(null);
服务器端:
String uiname  = new String(request.getParameter("tudname").getBytes("ISO-8859-1"), "GBK");



POST方式
页面:
    var tuiName=document.getElementById('demo_tempaltename').value;
    var querystring=encodeURI(encodeURI("method=findTableUiDictByUiname&tuiname="+tuiName));
    var url="card.do";
    createXmlHttp();                        //创建XmlHttpRequest对象
    xmlHttp.onreadystatechange = writeMsg;
    xmlHttp.open("POST", url, true);
    xmlHttp.setRequestHeader("content-length",querystring.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.send(querystring);
服务器端:
String uiname =URLDecoder.decode(request.getParameter("tuiname"),"UTF-8");

 

实践证明,这两种方式完全能够解决AJAX乱码问题

1 楼 yu499819 2011-04-28  
弱弱问一下普通提交怎么解决中文乱码?<form><input type="submit" /></form>
2 楼 JavaCrazyer 2011-04-28  
yu499819 写道
弱弱问一下普通提交怎么解决中文乱码?<form><input type="submit" /></form>

普通提交就没有这么麻烦了,保证不乱码的前提是项目编码,页面编码,以及编码过滤器中的编码要完全一致就OK
3 楼 yu499819 2011-04-28  
JavaCrazyer 写道
yu499819 写道
弱弱问一下普通提交怎么解决中文乱码?<form><input type="submit" /></form>

普通提交就没有这么麻烦了,保证不乱码的前提是项目编码,页面编码,以及编码过滤器中的编码要完全一致就OK

哦  谢谢LZ,有空了去试试。。
4 楼 ForgiDaved 2011-05-07  
  第二种两次encodeURI不单单是对AJAX有效,普通的表单提交也是很有效的。哈哈 我一直是用这个,乐此不疲AJAX中GET跟POST方式乱码解决方案
5 楼 JavaCrazyer 2011-05-07  
ForgiDaved 写道
  第二种两次encodeURI不单单是对AJAX有效,普通的表单提交也是很有效的。哈哈 我一直是用这个,乐此不疲AJAX中GET跟POST方式乱码解决方案

恩,的确是