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 isType() 类型判断代码
Feb 14 Javascript
JS代码同步文本框内容的实例方法
Jul 12 Javascript
DIV始终居中的js代码
Feb 17 Javascript
Jquery中的层次选择器与find()的区别示例介绍
Feb 20 Javascript
浅析Node在构建超媒体API中的作用
Jul 30 Javascript
jQuery中hide()方法用法实例
Dec 24 Javascript
jquery实现无限分级横向导航菜单的方法
Mar 12 Javascript
vue制作加载更多功能的正确打开方式
Oct 12 Javascript
Angular ng-animate和ng-cookies用法详解
Apr 18 Javascript
浅谈vue项目用到的mock数据接口的两种方式
Oct 09 Javascript
JavaScript中的this妙用实例分析
May 09 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
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新手上路(七)
2006/10/09 PHP
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
javascript的this关键字详解
2019/05/20 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
python 正则式使用心得
2009/05/07 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
Django+Ajax+jQuery实现网页动态更新的实例
2018/05/28 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
全球度假村:Club Med
2017/11/27 全球购物
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
工厂总经理岗位职责
2014/02/07 职场文书
积极向上的团队口号
2014/06/06 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
500字作文之周记
2019/12/13 职场文书