真正的JQuery.ajax传递中文参数的解决方法


Posted in Javascript onMay 28, 2011

本人最近也遇到了需要传递中文参数的问题。在网上搜索一下,复制粘贴发的到处都是的“终极”“解决方案”无非就是escape(str)来转码,然后在服务端还要写个方法再编辑一次,或用System.Text.Encoding下的方法来换来换去。

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

真正的JQuery.ajax传递中文参数的解决方法
不同之处在于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.ajax传递中文参数的解决方法
只需要简单的将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/javascript" 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>
Javascript 相关文章推荐
jquery 学习之一 对象访问
Nov 23 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
Apr 08 Javascript
javascript 在firebug调试时用console.log的方法
May 10 Javascript
jQuery使用height()获取高度需要注意的地方
Dec 13 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
Mar 04 Javascript
JavaScript之AOP编程实例
Jul 17 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
vue 使用自定义指令实现表单校验的方法
Aug 28 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
TypeScript中使用getElementXXX()的示例代码
Sep 12 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
Apr 28 Javascript
jquery 图片上传按比例预览插件集合
May 28 #Javascript
使用jquery实现select添加实现后台权限添加的效果
May 28 #Javascript
jQuery 源码分析笔记(2) 变量列表
May 28 #Javascript
Jquery下:nth-child(an+b)的使用注意
May 28 #Javascript
鼠标滑上去后图片放大浮出效果的js代码
May 28 #Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 #Javascript
actionscript与javascript的区别
May 25 #Javascript
You might like
php读取3389的脚本
2014/05/06 PHP
PHP实现递归的三种方法
2020/07/04 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
初步解析Python中的yield函数的用法
2015/04/03 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
python机器学习之神经网络(三)
2017/12/20 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
python如何变换环境
2020/07/21 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
Kneipp克奈圃美国官网:德国百年精油配方的传承
2018/02/07 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
心理学专业毕业生推荐信范文
2013/11/21 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
合伙经营协议书
2014/04/18 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
芙蓉镇观后感
2015/06/10 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
解决mysql的int型主键自增问题
2021/07/15 MySQL
Android存储中最基本的文件存储方式
2022/04/30 Java/Android