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


Posted in Javascript onOctober 21, 2014

本文实例讲述了JQuery中Post传递中文出现的解决方法,即乱码ajax与jquery.ajax中文参数post传递乱码处理方法。分享给大家供大家参考。具体分析如下:

问题一:

今天在做项目时,需要用到Ajax,之前我在用GET方式传递中文参数时,只需要在后台程序中设置页面编码为GB2312即中文能正常显示,可是这次由于表单项目较多,不适合用GET方式传递,只能用POST方式,但发现后台程序中设置编码为GB2312时中文还是显示的乱码。经过一番研究问题才最终得到解决。

解决方法:

解决此问题的方法非常简单,只需要在JS处理参数时用escape()函数处理一下即可,而且不需要再用unescape()解码,这个方法适合POST和GET方式,具体的Ajax代码这里我不例出,这里给出用escape()函数处理参数时的代码:

var htmer ="getcode="+escape(getcode)+"&Content="+escape(Content);
 

通常我们在处理Ajax的时候会在这里直接获取参数的值,为了使中文参数不是乱码,我们只需要用escape()函数对参数处理下即可。

问题二:

当网站页面不是utf-8编码时,ajax提交的中文便会变成乱码。

解决方法如下:

找到jquery.js里的contentType:application/x-www-form-urlencoded,将它改成contentType:application/x-www-form-urlencoded; charset=UTF-8就可以了。

原因:未指定charset时,jquery使用ISO-8859-1,ISO8859-1,通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符。jquery的ajax根本没有考虑到国际化的问题,而使用了欧洲的字符集,所以传递中文时才会出现乱码

我很久以前一直在使用Prototype框架。在.net-GB2312或jsp教程-utf8下都使用过,从来没遇到有字符编码的问题。于是将Prototype和JQuery代码都下载下来打开研究原因。

不同之处在于JQuery默认的contentType:application/x-www-form-urlencoded

而Prototype则是contentType:application/x-www-form-urlencoded; charset=UTF-8

这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1

ISO8859-1,通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符。

JQuery的Ajax根本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题。

而我们的UTF-8则可以解决这一问题。

最终指需要修改JQuery的代码,显式声明contentType使用utf-8字符集,即可解决GB2312中文传递的问题。

只需要简单的将JQuery的代码加以修改,加上charset=UTF-8就可以了,这样不需要改变改什么web.config或什么在页面中改编码什么的了,也不需要用escapc(str)再在服务端解码。英文怎么传递,中文也怎么传递。

这里给段简单的代码测试一下:

test.html页面代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title></title>

<script type="text/网页特效" src="scripts/jquery-1.3.2.min.js"></script>

<script type="text/javascript">

function DoAjax(){

$.post("AjaxTest.aspx",{txt:$("#tbox1").val()},

function(data){

$("#AjaxResponse").text(data);

}

);

}

</script>

</head>
<body>

<p><a href="javascript:DoAjax();">AjaxTest</a><input name="tbox1" id="tbox1" type="text" /></p>

<div id="AjaxResponse"></div>

</body>

</html>

AjaxTest.aspx处理页面:

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>

<script runat="server">

string parms;
void Page_Load(object sender , EventArgs e)

{

parms=Request["txt"];

if (String.IsNullOrEmpty(parms)){

Response.Write("Is Null");

}else{

Response.Write(parms);

}

}

</script>

此外,由于Ajax的默认汉字编码是utf-8,因此比较保险的方法是保证所涉及的页面统一编码格式为utf-8。

希望本文所述对大家基于的jQuery的Ajax程序设计有所帮助。

Javascript 相关文章推荐
基于jquery的回到页面顶部按钮
Jun 27 Javascript
jQuery代码优化 遍历篇
Nov 01 Javascript
简单时间提示DEMO从0开始一直进行计时
Nov 19 Javascript
Node.js中的缓冲与流模块详细介绍
Feb 11 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
jquery插件uploadify实现带进度条的文件批量上传
Dec 13 Javascript
AngularJs页面筛选标签小功能
Aug 01 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 Javascript
详谈angularjs中路由页面强制更新的问题
Apr 24 Javascript
ios设备中angularjs无法改变页面title的解决方法
Sep 13 Javascript
ElementUI多个子组件表单的校验管理实现
Nov 07 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
Jul 31 Javascript
jquery中post方法用法实例
Oct 21 #Javascript
js调试工具Console命令详解
Oct 21 #Javascript
JS中FRAME的操作问题实例分析
Oct 21 #Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
Oct 20 #Javascript
Javascript+CSS实现影像卷帘效果思路及代码
Oct 20 #Javascript
利用jquery操作Radio方法小结
Oct 20 #Javascript
利用a标签自动解析URL分析网址实例
Oct 20 #Javascript
You might like
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
用Python解决计数原理问题的方法
2016/08/04 Python
Python实现基本线性数据结构
2016/08/22 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
python爬取微博评论的实例讲解
2021/01/15 Python
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
开工庆典邀请函范文
2014/01/16 职场文书
武当山导游词
2015/02/03 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
2016春季运动会开幕词
2016/03/04 职场文书