你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Web开发
解决JQuery表单异步提交到action的乱码问题(ajaxform,ajaxsubmit)
 

在学习JQuery的表单异步提交时,发现会出现中文乱码问题:

解决方案目前找到两个:

第一,比较土了,就是在action中,用

System.out.println(new String(this.testField1.getBytes("ISO-8859-1"),"UTF-8"));来处理。但是如果传的某个类的属性,这样显然有些麻烦。

 


第二,比较先进了,借助JQuery提供了可设置的参数来解决问题:

$("#JqueryForm").submit(function(){
$(this).ajaxSubmit(
//加上参数可解决乱码,但不执行回调
{contentType: "application/x-www-form-urlencoded; charset=utf-8",
success:function(){
$("#testOut").html("提交成功,欢迎回来").show();
}
});
return false;//阻止表单提交
});


准确地说,是加上contentType: "application/x-www-form-urlencoded; charset=utf-8",这个参数就可以了。

 


=================================================================================================

产生问题的原因:

JQuery的AJAX提交,会将要提交的数据进行编码,使用encodeURIComponent在js中处理数据。因此,无论是 Firefox或者IE,提交的数据都是一致的,都是UTF-8编码后的数据。
查看Header,发现Entity中的Content-Type存在差异
在Firefox中,Content-Type指定了字符集为utf-8。www.2cto.com
而IE里面却没有任何字符集指定,
显然,默认情况下,AJAX的异步提交的字符编码应该和网页本身保持一致,也就是说,Server端在没有发现显示的charset指定的情 况下,使用gb2312来解码数据(但是数据在提交前已经被UTF-8编码了),这就是为什么在IE下会出现乱码的根源,而在Firefox下,浏览器在 提交AJAX数据的时候,加上了charset的显示指定,导致Server端采用UTF-8来解码数据(正确解码)。
查阅JQuery的AJAX工具函数的说明,发现options中有一个指定content-type的参数
所以在提交的时候要指定编码类型
contentType: "application/x-www-form-urlencoded; charset=utf-8",

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089