var _realname = $("input[name='_searchName']").val();
var termcourseId = '<%=termid%>';
var classId = '<%=classid%>';
var url = "/addressbook/studentListNoPage.do";
//var dataUrl = "formMap.TERMCOURSE_ID="+termcourseId+"&formMap.CLASS_ID="+classId+"&formMap.IS_ONLINE=all&formMap.REALNAME="+_realname;
$.ajax({
type: "POST",
url: url,
dataType:"json",
data: {
"formMap.TERMCOURSE_ID":termcourseId,
"formMap.CLASS_ID":classId,
"formMap.IS_ONLINE":"all",
"formMap.REALNAME":encodeURI(_realname)
},
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: function(data){
data = eval(data);
var html = "";
$("#allUnselectedUser").html(html);
},
error : function(XMLHttpRequest, textStatus, errorThrown){
alert(textStatus);
}
});
其中当使用dataUrl中的&方式提交时,无论前台是使用encodeURI或者encodeURIComponent又或者escape把中文转码,提交到Action中都是乱码,并不是想要的%e6%b1%89%e5%ad%97这种转后编码。即使加上contentType也不行。
把dataUrl中的&方式提交修改为data:{name:value}的方式提交即可。
在Action中使用
URLDecoder.decode(realname,
"UTF-8")来转码即可转换为中文了。使用UTF-8是因为Jquery的提交方式默认为UTF-8,即使把contentType中的
charset修改其他,例如GBK,后台也把UTF-8修改GBK,都不能正确转换。
以下使用转载:http://blog.sina.com.cn/s/blog_4b81125f0100fc6x.html
jQuery ajax乱码问题解决
一、测试环境
jQuery:1.3.2
tomcat:5.5.17
二、测试方法
1.使用get方式
服务器端java代码:
String name = new String(request.getParameter("name").getBytes("iso8859-1"),"utf-8");
客户端js代码:
$.ajax({url: "2.jsp",type: "get",data: {name:"中文"},success: function(response){
alert(response);
}});
结果:正确显示
$.ajax({url: "2.jsp",type: "get",data: "name=中文",success: function(response){
alert(response);
}});
结果:乱码
$.get("2.jsp", { name: "中文" },function(response){
alert(response);
});
结果:正确显示
$.get("2.jsp", "name=中文",function(response){
alert(response);
});
结果:乱码
2.post方式
服务器端java代码:
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
客户端js代码:
$.ajax({url: "3.jsp",type: "post",data: "method=testAjaxPost&name=中文",success: function(response){
alert(response);
}});
结果:正确显示
$.ajax({url: "3.jsp",type: "post",data: {name:"中文"},success: function(response){
alert(response);
}});
结果:正确显示
$.post("3.jsp", { name: "中文" },function(response){
alert(response);
});
结果:正确显示
$.post("3.jsp", "name=中文",function(response){
alert(response);
});
结果:正确显示
三、使用filter
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
if (req.getHeader("X-Requested-With") != null && req.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest")) {
request.setCharacterEncoding("utf-8");
} else {
request.setCharacterEncoding("gbk");
}
chain.doFilter(request, response);
}
jQuery在使用ajax的时候会在header中加入X-Requested-With,值为:XMLHttpRequest,filter中判断是
jQuery的ajax请求时就把字符编码设为utf8,这样可以解决post提交中的中文乱码问题,不需要在代码中设置
request.setCharacterEncoding("UTF-8");
对于get方式的中文乱码问题,建议不使用get方式提交中文,统统改为post ^-^
为了和prototype.js处理中文的方式一致,可以使用如下的方式,自定义header中的属性RequestType
$.ajax({
url: "3.jsp",
type: "post",
data: {name:"中文"},
beforeSend: function(XMLHttpRequest){
XMLHttpRequest.setRequestHeader("RequestType", "ajax");
alert("开始");
},
success: function(data, textStatus){
alert(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert("错误:" + textStatus);
},
complete: function(XMLHttpRequest, textStatus){
alert("完成:" + textStatus);
}
});
filter代码如下:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
if (req.getHeader("RequestType") != null && req.getHeader("RequestType").equalsIgnoreCase("ajax"))) {
request.setCharacterEncoding("utf-8");
} else {
request.setCharacterEncoding("gbk");
}
chain.doFilter(request, response);
}
分享到:
相关推荐
### jQuery中文乱码完美解决方案 在处理Web应用中,尤其是涉及到多语言环境时,中文乱码问题时常困扰着开发者。本文将深入探讨jQuery在处理中文数据时遇到的乱码问题,并提供一系列有效的解决方案。 #### 一、理解...
Jquery serialize() 中文乱码及解决方法 Jquery serialize() 方法在处理中文数据时,经常会出现乱码问题。这种问题的原因是 serialize() 方法自动调用了 encodeURIComponent 方法将数据编码了,从而导致中文乱码。...
### jQuery + ASP AJAX 中文乱码问题解决方案 在开发基于jQuery和ASP的Web应用程序时,中文乱码问题可能成为困扰开发者的一大难题。特别是在使用Ajax进行前后端数据交互时,中文字符可能会出现乱码现象,影响用户...
本示例将涵盖如何使用jQuery实现自动补全功能,包括解决中文乱码问题以及常用属性配置。 ### 1. jQuery自动补全基本原理 jQuery 自动补全基于jQuery库,通过监听用户在输入框中的输入事件,实时查询预定义的数据集...
以上就是解决在使用jQuery获取URL参数时出现中文乱码问题的两种方法,以及相关的编码和解码处理方式。需要注意的是,乱码问题的出现主要是由于编码和解码不一致导致的,所以在前后端处理URL参数时,一定要注意正确地...
然而,当涉及到非英文字符,尤其是中文字符时,可能会遇到编码问题,导致乱码。本文将深入探讨`tableExport`导出PDF时中文乱码的解决方案。 首先,我们要理解乱码的根源。中文字符在计算机中是以特定的编码方式存储...
在使用jQuery Uploadify插件时,用户可能会遇到“scriptData”参数中的中文数据出现乱码的问题。这通常是因为字符编码不一致导致的。Uploadify是一个非常流行的文件上传插件,它允许用户通过异步方式上传文件,同时...
在使用jspdf库生成PDF文档时,经常遇到中文字符显示为乱码的问题。这通常是由于字符编码不兼容或缺少字体支持导致的。本教程将详细解释如何解决jspdf中文乱码的问题,帮助开发者顺利导出含有中文内容的PDF。 首先,...
总之,处理JSON操作中的中文乱码问题,关键在于确保数据的编码和解码过程中使用了UTF-8。在前端,jQuery的`$.getJSON`已经做了很好的处理,而在后端,如Java中,Gson库也可以有效地管理中文字符。对于其他编程语言和...
uploadify是一款基于jQuery库的上传插件,但很可惜的是无论你怎么设置参数buttonText ,它的中文按钮都会出现乱码的情况.本资源更正了源码的编码方式,从根本上解决了中文(包括CJK)乱码的问题。要知道乱码原因,及...
**jQuery 1.12.4 知识点详解** jQuery 是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。在本压缩包中,我们有两个版本的jQuery核心库文件:`jquery-1.12.4.js` 和 `jquery...
### GBK编码下jQuery_Ajax中文乱码解决方案 #### 背景介绍 在Web开发过程中,使用Ajax技术与服务器端交互数据时经常会遇到字符集编码的问题,尤其是在使用GBK编码的环境中,通过jQuery发起的Ajax请求往往会导致...
### jQuery中文乱码的多种解决方法 #### 一、引言 在Web开发过程中,中文乱码是一个常见的问题,尤其是在使用jQuery进行异步请求时。本文将详细介绍如何解决使用jQuery时遇到的中文乱码问题,并提供多种解决方案。 ...
简单整理的乱码处理方案,jquery的ajax解决UTF-8以及GBK的问题
在IT领域,jQuery中文转换成拼音的代码是一个实用的功能,尤其在处理中文数据时非常有用。这个功能可以将用户输入的中文字符转化为对应的拼音,同时还能生成中文汉字的唯一编号。这种技术在诸如搜索引擎优化(SEO)...
资源名称:jquery1.7 中文手册 CHM文档(附jquery1.82 chm手册)内容简介:因国内jquery中文手册更新太慢了,等了一段时间实在等不下去了,干脆自己动手做一个丰衣足食,时刻更新. 最后感谢Shawphy提供1.4.1版,jehn提供...
《jQuery中文文档1.8和1.4的chm文档》是两个版本的jQuery官方文档的中文翻译版,主要用于帮助开发者理解和使用这个广泛应用于Web开发的JavaScript库。jQuery以其简洁的API和强大的功能,极大地简化了DOM操作、事件...
本篇将详细探讨如何在Java环境下使用jQuery File Upload实现文件上传并处理中文文件名的乱码问题。 首先,jQuery File Upload的核心原理是利用HTML5的File API进行异步文件上传。它通过AJAX请求将文件分块上传到...
jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码...