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 相关文章推荐
onsubmit阻止form表单提交与onclick的相关操作
Sep 03 Javascript
js获取日期:昨天今天和明天、后天
Jun 11 Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 Javascript
浅析JavaScript作用域链、执行上下文与闭包
Feb 01 Javascript
巧用Javascript的逻辑运算符
Dec 02 Javascript
利用vue写todolist单页应用
Dec 15 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
vue.js通过路由实现经典的三栏布局实例代码
Jul 08 Javascript
Vuex新手的理解与使用详解
May 31 Javascript
解决在layer.open中使用时间控件laydate失败的问题
Sep 11 Javascript
JavaScript中的函数式编程详解
Aug 22 Javascript
详解ES6实现类的私有变量的几种写法
Feb 10 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下安装配置fckeditor编辑器的方法
2011/03/02 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
javascript 函数使用说明
2010/04/07 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
Python自动发邮件脚本
2017/03/31 Python
详解python里的命名规范
2018/07/16 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
爱游人:Travelliker
2017/09/05 全球购物
墨西哥网上超市:Superama
2018/07/10 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
综治维稳工作承诺书
2014/08/30 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
搞笑婚前保证书
2015/02/28 职场文书
限期整改通知书
2015/04/22 职场文书
个人催款函范文
2015/06/23 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
python单元测试之pytest的使用
2021/06/07 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB