真正的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 相关文章推荐
建议大家看下JavaScript重要知识更新
Jul 08 Javascript
javascript 面向对象编程  function是方法(函数)
Sep 17 Javascript
jquery tab标签页的制作
May 10 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
Jul 09 Javascript
jquery动态改变div宽度和高度
Feb 09 Javascript
javascript创建对象、对象继承的实用方式详解
Mar 08 Javascript
jQuery插件ajaxFileUpload使用实例解析
Oct 19 Javascript
bootstrap手风琴制作方法详解
Jan 11 Javascript
jquery实现轮播图效果
Feb 13 Javascript
带你快速理解javascript中的事件模型
Aug 14 Javascript
JavaScript编写棋盘覆盖代码详解
Aug 28 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
Jul 31 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
德劲1104的电路分析与改良
2021/03/01 无线电
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
python简单的函数定义和用法实例
2015/05/07 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
Python第三方库的安装方法总结
2016/06/06 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
毕业研究生的自我鉴定
2013/11/30 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
先进集体获奖感言
2014/02/13 职场文书
大学生职业规划书的范本
2014/02/18 职场文书
家长对老师的评语
2014/04/18 职场文书
诚信承诺书模板
2014/05/26 职场文书
维稳承诺书
2015/01/20 职场文书
信用卡催款律师函
2015/05/27 职场文书
课程设计感想范文
2015/08/11 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
设置IIS Express并发数
2022/07/07 Servers