jquery ajax乱码是很多朋友碰到的问题,今天我们用实例来帮你解决一下关于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的编码方式是不会出现乱码的