ajax $.post传值中文乱码!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax $.post传值中文乱码!相关的知识,希望对你有一定的参考价值。

<%@ page contentType="text/html; charset=GBK"%>

var name=$("#name").val();
$.post(url,name:name,function(data)
$.each(data,function(i,data)
$("#bgbs").append("<td align='center'>"+data.proname+"</td>");
);
,"json");

//后台
String name=request.getParameter("name");

前台打印都正常,就在传回到后台就乱码!

参考技术A 方法一
在后台中使用request.setCharacterEncoding("UTF-8");
方法二
$.ajax(
type:'post',

......
contentType:'application/x-www-form-urlencoded; charset=UTF-8'
);
方法三(此方法绝对可行)
前台js将参数值转为统一资源标示符(URI)例如name = encodeURI(encodeURI(‘张三'));注意要
encodeURI两次。
后台需要对URI进行解析
String name= request.getParameter(“name”);
name= URLDecoder.decode(name, “UTF-8″);追问

我用 方法三 不行啊, 前台打印出来是%%E6%92%92%E5%9C%B0%E6%96%B9%,
后台打印出来 也是 %%E6%92%92%E5%9C%B0%E6%96%B9%

追答

%%E6%92%92%E5%9C%B0%E6%96%B9%这个就是统一资源标示符,你需要在后台上进行解码URLDecoder.decode(name, “UTF-8″);

本回答被提问者和网友采纳
参考技术B 试试
new String(request.getParameter("name").getBytes("iso-8859-1"),"UTF-8")追问

报错
ERROR [http-8090-7] [Dispatcher] Could not find action or result

参考技术C 两步完成
1,前台js将参数值转为统一资源标示符(URI)例如name = encodeURI(encodeURI(‘张三'));或者name = encodeURI(‘张三');
2,后台java
String name=requestMap.get("name");
name=URLDecoder.decode(name,"UTF-8");

mui.ajax中文乱码

估计这是个bug:

 

  1 //mui 的 ajax 中文乱码
  2             var url = ‘http://api.juheapi.com/japi/toh?key=1f26c107d8864bdfb98202bc314ce0d5&month=11&day=25&v=2.0‘
  3             mui.ajax(url,{
  4                 dataType:‘json‘,
  5                 type:‘post‘,
  6                 timeout:5000,
  7                 success:function(data){
  8                     console.log(data);
  9                     var result = JSON.stringify(data.result);
 10                     console.log(result);
 11                 },
 12                 error:function(xhr,type,errorThrown){
 13                     console.log(type);
 14                 }
 15             });
 16             
 17             mui.plusReady(function(){
 18                 // 此种方式不会 中文乱码,
 19                 function a(){
 20                     var xhr = new plus.net.XMLHttpRequest();
 21                     xhr.onreadystatechange = function () {
 22                         switch ( xhr.readyState ) {
 23                             case 0:
 24                                 alert( "xhr请求已初始化" );
 25                             break;
 26                             case 1:
 27                                 alert( "xhr请求已打开" );
 28                             break;
 29                             case 2:
 30                                 alert( "xhr请求已发送" );
 31                             break;
 32                             case 3:
 33                                 alert( "xhr请求已响应");
 34                                 break;
 35                             case 4:
 36                                 if ( xhr.status == 200 ) {
 37                                     alert( "xhr请求成功:"+xhr.responseText );
 38                                 } else {
 39                                     alert( "xhr请求失败:"+xhr.readyState );
 40                                 }
 41                                 break;
 42                             default :
 43                                 break;
 44                         }
 45                     }
 46                     xhr.open( "GET", url );
 47                     xhr.send();
 48                 }
 49 //                a();
 50             })
 51             
 52             //我们对其进行封装
 53             function myAjax(url,postData,success,error){
 54                 // 此种方式不会 中文乱码,
 55                 var type = postData.type;
 56                 var timeout = postData.timeout;
 57                 var data = postData.data;
 58                 var xhr = new plus.net.XMLHttpRequest();
 59                 if(timeout&&timeout>0) xhr.timeout = timeout;
 60                 xhr.onreadystatechange = function () {
 61                     switch ( xhr.readyState ) {
 62                         case 0:
 63 //                            alert( "xhr请求已初始化" );
 64                         break;
 65                         case 1:
 66 //                            alert( "xhr请求已打开" );
 67                         break;
 68                         case 2:
 69 //                            alert( "xhr请求已发送" );
 70                         break;
 71                         case 3:
 72 //                            alert( "xhr请求已响应");
 73                             break;
 74                         case 4:
 75                             if ( xhr.status == 200 ) {
 76                                 success(eval(‘(‘+xhr.responseText+‘)‘));
 77                             } else {
 78                                 error(xhr.readyState,xhr);
 79                             }
 80                             break;
 81                         default :
 82                             break;
 83                     }
 84                 }
 85                 if(data){
 86                     if(type==‘post‘||type==‘get‘){
 87                         xhr.open( type||"GET", url );
 88                         xhr.send(JSON.stringify(data));
 89                     }else{
 90                         throw new Error("type is undefined !")
 91                     }
 92                 }else{
 93                     if(type!=‘post‘&&type!=‘get‘){
 94                         throw new Error("type is undefined !")
 95                     }
 96                     xhr.open( type||"GET", url );
 97                     xhr.send();
 98                 }
 99                 
100             }
101             mui.myAjax = myAjax;
102             mui.plusReady(function(){
103                 mui.myAjax(url,{
104                             type:‘post‘,
105                             timeout:5000,
106                             data:{}
107                         },
108                     function(data){
109                         var result = data.result;
110                         result = JSON.stringify(result);
111                         console.log(result);
112                         mui.alert(result);
113                     },function(state,xhr){
114                         console.log(state)
115                     }
116                 );
117             })

 

1.仅仅对ajax,简单的封装一下,如果你看不顺眼,就自己封装吧

2.涉及到mui的plus模块,故需真机调试

 

以上是关于ajax $.post传值中文乱码!的主要内容,如果未能解决你的问题,请参考以下文章

C++通过POST方式URL链接传值到JAVA中文乱码

怎么解决jsp页面get传值中文乱码问题

PHP $_POST提交中文乱码

ajax post请求中文乱码问题

ajax中中文乱码的问题

jQuery Ajax传值给Servlet,在Servlet里接受参数乱码的解决方法