当前位置:编程学习 > JS >>

jquery ajax返回值乱码解决方法

jquery ajax乱码是很多朋友碰到的问题,今天我们用实例来帮你解决一下关于jquery ajax返回值乱码解决方法吧,其实都是一些小细节哦。

实例解决方法

encodeuri(encodeuri(data))  ///注意两次编码!!
$.ajax({
       type: "post",
       url: url,
       data:data,
       contenttype :"application/x-www-form-urlencoded;charset=utf-8",
       cache: false,
       success  : viewajax.handle(this.pdomobj, this.div, url) ,
       error : viewajax.error(this.pdomobj, this.div, url)
    });  


java:

string queryvalue = java.net.urldecoder.decode((string)request.getparameter(querycode),"utf-8") ;


方法二

ajax发送请求时默认的编码是utf-8,前台与服务器的编码要统一这已经是不许再重复了,但即使如此,意外还是发生了;;;;;
网页特效:    //注意下面的两次转码,在server端也是进行了两次转码才获取到正常的数据

$("#querybyname").click(function(){
var name = encodeuri(encodeuri($("#qname").val()));
$.ajax({
type:"post",
url:"querybyname.action",
contenttype :"application/x-www-form-urlencoded;charset=utf-8",
data:{
queryname:name
},
success:function(msg){
$("#signwork").html(msg);
}
})
})

server :struts2

string name =getqueryname();
name =java.net.urldecoder.decode(name, "utf-8");
system.out.println("action......bbbb"+name);
string name01=java.net.urldecoder.decode(name, "utf-8");
system.out.println("............cccc"+name01);

此处用了两次转码才获取到正确的数据,具体原因分析中;
据说还有另外一种简单的途径就是设置
tomcat对配置文件server.xml
uriencoding就ok了


最后发现了问题的根源,其实是我的struts2的配置文件出现了一点点问题

在配置文件中就有这样一条配置信息

<constant name="struts.i18n.encoding" value="utf-8"></constant>

这个一定要和页面的编码一致,如果使用ajax发送请求的话默认的utf-8编码,但后台struts配置文件却是GBK,让我好生郁闷!!最后在使用常规action提交时也出现了乱码,才发现是这里出现了问题。其实如果全部使用utf-8的编码方式是不会出现乱码的

补充:网页制作,jquery 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,