`
cuishen
  • 浏览: 297969 次
  • 性别: 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  
。。。。。。

相关推荐

    ajax提交乱码

    通过以上方法,我们可以在Jquery中有效地解决Ajax提交乱码的问题,确保客户端和服务器端之间的数据传输准确无误。关键在于理解乱码产生的原因,即字符编码的不一致,以及通过设置正确的`Content-Type`和使用`...

    jQuery Ajax过滤器

    本文将深入探讨jQuery中的Ajax过滤器及其在Ajaxform表单提交中的应用,以及如何解决可能出现的乱码问题。 首先,让我们理解什么是jQuery Ajax过滤器。在jQuery中,`ajaxSend`、`ajaxComplete`、`ajaxSuccess`、`...

    Asp中使用JQuery的AJAX提交中文乱码解决方法

    在使用Asp进行Web开发过程中,通过JQuery的AJAX方法提交表单数据时,中文字符很容易出现乱码问题。为了解决这个问题,我们可以使用Asp自带的unescape()和escape()函数来进行编码和解码操作,以此确保数据在客户端与...

    jquery ajax传递中文参数乱码问题及解决方法说明

    总的来说,解决`jQuery Ajax`传递中文参数乱码问题的方法包括以下步骤: 1. 确保前端页面的`meta`标签指定正确的字符集,如`&lt;meta charset="UTF-8"&gt;`。 2. 在`$.ajax`调用中,设置`contentType`为`"application/x-...

    jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)

    现在,针对GBK编码环境下使用jQuery AJAX提交表单的问题,文章提出了一个终极解决方案,也就是非二次编码方法。这种方法避免了复杂的编码解码过程,可以有效解决问题。 核心思想是这样的:由于GBK和UTF-8编码是不同...

    如何解决JQuery ajaxSubmit提交中文乱码

    在Web开发过程中,使用JQuery的ajaxSubmit方法进行表单提交时,中文乱码问题是一个常见的困扰。中文乱码问题通常发生在数据的提交和接收过程中,由于字符编码的不一致导致。为了解决这个问题,首先需要了解JQuery的...

    ajax POST 与GET提交的区别

    - **POST**: 同样存在乱码问题,可以通过设置Content-Type和服务器端编码来解决。 7. **实现细节**: - **GET**: 参数直接拼接在URL后面,如 `http://example.com?name=value`。 - **POST**: 需要通过设置Content...

    解决ajax+php中文乱码的方法详解

    表单提交和AJAX提交的区别在于,表单提交时,浏览器会根据页面的编码来编码数据,然后以该编码形式发送给服务器,服务器也应使用相同的编码解析。而在AJAX提交中,数据通常是JSON格式或者URL编码的字符串,这时就...

    jQuery.validationEngine 表单验证中文版

    jQuery.validationEngine是一款强大的JavaScript插件,专用于前端表单验证。这款插件以其简洁的API、丰富的验证规则和良好的国际化支持而备受青睐。在中文环境中,它可以为用户提供友好的中文提示,确保用户输入的...

    SpringMVC+Jquery实现Ajax功能

    4. **配置过滤器**:配置`CharacterEncodingFilter`以解决POST请求可能出现的乱码问题,确保请求和响应使用UTF-8编码。 5. **配置SpringMVC配置文件**(例如`applicationContext-mvc.xml`):定义处理器映射器、...

    jquery.messager.js

    此外,还可以自定义消息内容,添加按钮,甚至插入HTML代码,以实现更为复杂的功能,如表单提交、链接跳转等。 再者,jQuery Messager.js 支持多种触发方式,包括点击按钮、页面加载、Ajax 请求完成等事件。这使得...

    jQuery ajaxForm()的应用

    通过上述步骤,可以看出ajaxForm()方法可以极大地简化通过AJAX方式提交表单的过程,使得表单提交更加高效、快速且用户体验更佳。而jQuery Form插件则为开发者提供了一种简洁、强大的方式来升级传统表单,让Web应用...

    解决ASP.NET中的各种乱码问题总结

    在***开发中,乱码问题是常见的困扰开发者的问题,特别是涉及到数据编码、页面显示、以及AJAX提交等方面。本篇总结将围绕这些问题展开详细讨论,帮助开发者理解和解决乱码问题。 首先,***页面显示乱码问题经常会...

    Ajax学习文档(无门槛-精)Markdown File (.md)

    Ajax处理字符编码时可能出现乱码,解决方法包括设置响应头的字符集、在JavaScript中处理字符编码,以及确保服务器返回的响应内容和客户端的字符集一致。 ### 4. 同步与异步 - **同步**:请求发送后,浏览器会等待...

    js传中文参数controller里获取参数乱码问题解决方法

    ### js传中文参数controller里获取参数乱码问题解决方法 #### 背景与问题描述 在Web开发中,前后端交互是常见的场景之一。当从前端(如JavaScript)向后端(例如Java中的Controller)传递包含中文字符的参数时,...

    使用JQuery框架设计的网页

    在描述中提到的网页可能有乱码问题,这可能与字符编码设置有关,使用jQuery可以轻松地对页面中的文本进行操作,例如修改元素的文本或替换内容,以解决可能出现的编码问题。 其次,jQuery提供了丰富的DOM操作方法,...

    jQuery学习记录----页面缓存和中文处理(三)

    解决这个问题的方法是统一编码格式,或者在发送和接收数据时进行编码转换。 jQuery还提供了一些实用的函数来处理字符串,比如$.trim()用于去除字符串首尾的空白字符,$.escapeSelector()用于转义CSS选择器中的特殊...

    Ajax的编码问题总结(2)

    本篇文章将聚焦于Ajax编码过程中常见的问题和解决方案,主要从以下几个方面进行探讨: 1. **跨域问题**: 在使用Ajax进行请求时,由于浏览器的同源策略限制,通常只能向同源的服务器发送请求。如果需要向其他域名...

Global site tag (gtag.js) - Google Analytics