网络编程 
首页 > 网络编程 > 浏览文章

JQuery中Ajax的Post提交在IE下中文乱码的解决方法

(编辑:jimmy 日期: 2024/11/28 浏览:3 次 )
引言: 在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/isHasUser.do?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请求传递过来的字符串信息,就可以正常显示中文了。
上一篇:Ajax核心技术代码分享
下一篇:ajax跨域请求js拒绝访问的解决方法
一句话新闻
高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap