`
cuishen
  • 浏览: 293780 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

AJAX JQuery 提交表单乱码问题解决方案

    博客分类:
  • j2ee
阅读更多
最近遇到AJAX/JQuery 提交form表单出现乱码的问题,以下是我们项目中的解决方案。

client端AJAX/JQuery 提交表单,类似下面代码:
--提交给action
		var dataString = 'subject=' + paramSubject + '&mailbody=' + paramMailBody;
		  $(function(){     
			   $.ajax({                  
				   type: "POST",           
				   url: '<%=request.getContextPath()%>/app/xxx/saveDraft.do',  
				   data: dataString,
				   processData: false,			   
				   success: function(){}
					});
			return false;
		 });

--或提交给JAX-RS Resource
var dataStr = "&subject="+subject+"&mailbody="+mailbody;
$.ajax({
url:urlPath,
data: dataStr,
type:'POST',
dataType:'json',
contentType:'application/x-www-form-urlencoded',
success:function(data, status, xhr) {
},
error:function(xhr,error,exception) {
exception.toString();
}
});


对于FireFox来说,提交的表单的request的Content-Type会像下面这样:
Content-Type	application/x-www-form-urlencoded;charset=UTF-8


请求提交后,首先经过filter
request.setCharacterEncoding("UTF-8");


然后到了Action 或者 JAX-RS Resource后拿到的表单数据如果有中文就会有乱码。

解决方案其实很简单:
1. client端的js里面用encodeURIComponent方法encode表单数据,然后再ajax提交后台。
var dataString = 'subject=' + encodeURIComponent(paramSubject) + '&mailbody=' + encodeURIComponent(paramMailBody);

2. Server端Action 或者 JAX-RS Resource使用下面的代码解码:
String mailbody = java.net.URLDecoder.decode(mailbody, "UTF-8");
0
4
分享到:
评论
7 楼 酷的飞上天空 2012-10-16  
既然已经是post了
那就把ajax里面的data: dataString  改成data: {"subject":subject,"mailbody":mailbody}
然后后台添加一个CharacterEncodingFilter
一般不都是这样解决的么。
6 楼 xingkongxieyang 2012-10-16  
bei79 写道
xingkongxieyang 写道
为什么不用序列化表单元素。serializeArray()

k10509806 写道
其实用编码过滤器就可以了。


这么简单吗?

你试试不就知道了。
5 楼 bei79 2012-10-16  
xingkongxieyang 写道
为什么不用序列化表单元素。serializeArray()

k10509806 写道
其实用编码过滤器就可以了。


这么简单吗?
4 楼 xingkongxieyang 2012-10-16  
为什么不用序列化表单元素。serializeArray()
3 楼 zengyan2012 2012-10-16  
k10509806 写道
其实用编码过滤器就可以了。

怎么做》??
2 楼 k10509806 2012-10-16  
其实用编码过滤器就可以了。
1 楼 freezingsky 2012-10-16  
。。。。。。

相关推荐

    jQuery Ajax过滤器

    用jQuery实现Ajaxform表单提交! 实现过滤乱码! 解决乱码!

    JQuery的Ajax中Post方法传递中文出现乱码的解决方法

    本文实例讲述了JQuery中Post传递中文出现的解决方法,即乱码ajax与jquery.ajax中文参数post传递乱码处理方法。分享给大家供大家参考。具体分析如下: 问题一: 今天在做项目时,需要用到Ajax,之前我在用GET方式传递...

    ajax实现excel报表导出

    利用ajax实现excel报表导出【解决乱码问题】,供大家参考,具体内容如下 背景 项目中遇到一个场景,要导出一个excel报表。由于需要token验证,所以不能用a标签;由于页面复杂,所以不能使用表单提交。初步考虑前端...

    cangkuguanli.zip

    7添加一个过滤器解决网页乱码问题 8给网站添加一个欢迎页面,吸引用户使用 备注: 1)项目中使用的技术: HTML, JavaScript, JSP, Servlet, JSTL, EL. Ajax。缺一不可 2)使用JDBC访问数据库,两种方式:基础代码,Dao...

    Java面试宝典2020修订版V1.0.1.doc

    7、简述ajax中Js脚本缓存问题该如何解决? 26 8、同步和异步怎么理解?分别在什么情况下使用。 26 9、java后台如何接收ajax数据? 26 10、为什么要有jquery? 26 11、jQuery选择器有多少种? 27 13、你是如何使用...

    文章管理系统

    5.加强前台提交表单信息的安全过滤 6.修复几个细节BUG 2014年04月30日 V2.84更新包(推荐升级) 1.修复安装向导配置时对数据库字符过滤不严存在入侵漏洞 2.修复后台模板样式文件字符过滤不严存在入侵漏洞 3.修复...

    Java学习笔记-个人整理的

    {1.7}方法}{26}{section.1.7} {1.8}运算符}{27}{section.1.8} {1.8.1}自增运算}{28}{subsection.1.8.1} {1.8.1.1}Postincrement}{28}{subsubsection.1.8.1.1} {1.8.1.2}Preincrement}{28}{subsubsection.1.8....

Global site tag (gtag.js) - Google Analytics