真正的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 相关文章推荐
解析John Resig Simple JavaScript Inheritance代码
Dec 03 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
js实现在同一窗口浏览图片
Sep 17 Javascript
jQuery选择器之基本选择器与层次选择器
Mar 03 Javascript
js实现带有介绍的Select列表菜单实例
Aug 18 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
Feb 27 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
微信小程序实现皮肤功能(夜间模式)
Jun 18 Javascript
vue权限管理系统的实现代码
Jan 17 Javascript
Vue 表情包输入组件的实现代码
Jan 21 Javascript
使用p5.js临摹动态图片
Nov 04 Javascript
React实现动效弹窗组件
Jun 21 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 PDO中文乱码解决办法
2009/07/20 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
JavaScript 基本概念
2015/01/20 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
js操作二进制数据方法
2018/03/03 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
提高python代码运行效率的一些建议
2020/09/29 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
初中生三年学习生活的自我评价
2013/11/03 职场文书
幼儿园优秀教师事迹
2014/02/13 职场文书
《春笋》教学反思
2014/04/15 职场文书
文体活动总结范文
2014/05/05 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
工程部经理岗位职责
2015/02/02 职场文书
校长一岗双责责任书
2015/05/09 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python