手机版

JQuery AJAX提交中文乱码解决方案

时间:2021-10-22 来源:互联网 编辑:宝哥软件园 浏览:

现象如下:1)在Firefox下,处理页面的代码为gb2312,提交数据没有问题,可以正确解析中文;IE8下,处理页面代码为gb2312,提交的中文数据乱码。不管美元。邮政,美元。ajax,也就是$的意思。ajaxSubmit(来自Form插件),之前的UTF-8编码网站没有问题,这似乎是提交数据的网页的编码格式造成的。反正浏览器之间既然有区别,那HTTP包就有问题了。打开提琴,分别用Firefox和IE做一个AJAX提交(以用户登录为例),查看它们的HTTP头,发现1)两个浏览器提交的表单数据一致,都是用UTF-8编码的,如下图所示。

分析:JQuery的AJAX提交会对要提交的数据进行编码,并使用encodeURIComponent对js中的数据进行处理。所以无论是Firefox还是IE,提交的数据都是一致的,都是UTF-8编码的数据。2)查看标题,发现实体中的内容类型存在差异。在火狐中,内容类型指定的字符集是utf-8。

但是,在IE8中,没有指定字符集。

分析:显然,默认情况下,AJAX异步提交的字符编码应该与网页本身一致,也就是说,Server使用gb2312对数据进行解码,却没有找到charset指定的显示(但数据在提交前已经被UTF-8编码),这是IE下乱码的根源,而在Firefox下,浏览器在提交AJAX数据时添加charset指定的显示。推论:看来要解决这个中文乱码问题,必须为AJAX异步提交指定显式字符集!立即参考JQuery的AJAX工具函数的描述,发现选项中有一个指定内容类型的参数,并在我的AJAX代码中添加以下代码:jquery (form)。ajaxsubmit ({url3360' Ajax.aspx?a=memberlogin ',type: 'post ',dataType: 'json ',content type : ' application/x-www-form-URL encoded;charset=utf-8 ',success : showLoginResponse });测试,OK!

版权声明:JQuery AJAX提交中文乱码解决方案是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。