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 相关文章推荐
Javascript 各浏览器的 Javascript 效率对比
Jan 23 Javascript
js null,undefined,字符串小结
Aug 21 Javascript
探讨javascript是不是面向对象的语言
Nov 21 Javascript
seaJs的模块定义和模块加载浅析
Jun 06 Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
Javascript Event(事件)的传播与冒泡
Jan 23 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
vue中组件通信的八种方式(值得收藏!)
Aug 09 Javascript
JavaScript基于用户照片姓名生成海报
May 29 Javascript
ant-design-vue中tree增删改的操作方法
Nov 03 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 获取远程网页内容的函数
2009/09/08 PHP
PHP中的float类型使用说明
2010/07/27 PHP
php重定向的三种方法分享
2012/02/22 PHP
分享PHP header函数使用教程
2013/09/05 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
jquery 面包屑导航 具体实现
2013/06/05 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
vue生命周期实例小结
2018/08/15 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
Python的print用法示例
2014/02/11 Python
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
Python检测生僻字的实现方法
2016/10/23 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
python 实现汉诺塔游戏
2020/11/28 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
浪漫婚礼主持词
2014/03/14 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
贷款收入证明格式
2015/06/24 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技