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脚本调试方法小结
Nov 24 Javascript
将函数的实际参数转换成数组的方法
Jan 25 Javascript
js实现的日期操作类DateTime函数代码
Mar 16 Javascript
关于JS中prototype的理解
Sep 07 Javascript
不用一句js代码初始化组件
Jan 27 Javascript
浅析BootStrap模态框的使用(经典)
Apr 29 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
Sep 05 Javascript
原生JS实现首页进度加载动画
Sep 14 Javascript
javascript 中的try catch应用总结
Apr 01 Javascript
React props和state属性的具体使用方法
Apr 12 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
May 23 Javascript
详解Vue中组件传值的多重实现方式
Aug 16 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
图象函数中的中文显示
2006/10/09 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
python实现目录树生成示例
2014/03/28 Python
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Django中的Signal代码详解
2018/02/05 Python
Python批量发送post请求的实现代码
2018/05/05 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
Python单链表原理与实现方法详解
2020/02/22 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
办公室驾驶员岗位职责
2013/11/15 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
考试作弊检讨书
2015/01/27 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android