`
wenhai_zhang
  • 浏览: 186182 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【转】jQuery Ajax提交表单乱码问题的解决

    博客分类:
  • java
 
阅读更多

【原文】http://m.oschina.net/blog/94095

 

        同事请求帮忙,说程序好好的,忽然就在提交表单的时候乱码了。本着助人为乐的精神,去看了一下。了解了一下情况后开始调试。 
发现请求提交到后台的时候中文已经变成了乱码。检查web.xml, 发现有编码转换的Filter, 检查页面,编码是UTF-8,检查request的编码,也是UTF-8,编码都是一致的。就是提交到后台的时候乱码。 
试着把取到的乱码进行转码,发现如下的情况可以正常获得中文:

new String(name.getBytes("iso-8850-1"), "utf-8")

接近崩溃的边缘了。再查Post到后台的数据,中文也是UTF-8的编码。

开始百度,有人说在jQuery中设置ajaxSettings的contentType属性,在后面加上”;charset=utf-8”

ajaxSettings: {
    url: ajaxLocation,
    isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
    global: true,
    type: "GET",
    contentType: "application/x-www-form-urlencoded;charset=utf-8",
    processData: true,
    async: true,
            ......
  }

试着改了之后,发现果然可以解决问题。

但是总觉得这么解决问题有点怪怪的,jQuery那么多人用,为啥非要指定这个utf-8的编码呢,如果项目用的不是utf-8呢? 
回到自己的位子继续研究。项目中用的是Spring的CharacterEncodingFilter, 懒得下源码,于是自己写了个EncodingFilter加在前面,发现request.getCharacterEncoding()返回的是null,于是手动设置了一下编码为utf-8, 再getParameter, 发现是正常的中文。

此处省去部分文字……

在javaEE的文档里,对于setCharacterEncoding的解释是这样的:

Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader(). Otherwise, it has no effect.

最后发现是Filter的顺序问题导致。在encodingFilter之前配置了其他的Filter,刚好在那里调用了get方法,调整之后,一切恢复正常。

分享到:
评论

相关推荐

    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 ajaxSubmit提交中文乱码

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

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

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

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

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

    jQuery ajaxForm()的应用

    如果提供回调函数,这个函数将在Ajax表单提交成功后被调用,可以用来处理服务器返回的结果或者反馈给用户。例如: $('#myForm').ajaxForm(function(){ $('#output1').html("提交成功!欢迎下次再来!").show(); });...

    ajax POST 与GET提交的区别

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

    jQuery.validationEngine 表单验证中文版

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

    jquery.messager.js

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

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

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

    SpringMVC+Jquery实现Ajax功能

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

    Jquery AJAX POST与GET之间的区别详细介绍

    - 在处理 AJAX 数据时,可能出现乱码问题。这可能是由于客户端和服务器之间的字符编码不一致导致的。 - 解决方法包括在服务器端指定输出流的编码,或者确保客户端和服务器端使用相同的字符编码。 在实际应用中,...

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

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

    使用JQuery框架设计的网页

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

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

    在本篇jQuery学习记录中,我们将探讨两个关键的前端开发问题:页面缓存与中文处理。这两个主题在构建高效、用户友好的Web应用时都起着至关重要的作用。 首先,让我们深入了解页面缓存。在Web应用中,缓存是一种优化...

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

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

    ajax实现excel报表导出

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

Global site tag (gtag.js) - Google Analytics