真正的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 相关文章推荐
js写的评论分页(还不错)
Dec 23 Javascript
JS执行删除前的判断代码
Feb 18 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
Jun 05 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
js实现点击每个li节点,都弹出其文本值及修改
Dec 15 Javascript
Bootstrap3 多选和单选框(checkbox)
Dec 29 Javascript
jQuery Password Validation密码验证
Dec 30 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
Aug 14 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
Apr 09 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 Javascript
深入探索VueJS Scoped CSS 实现原理
Sep 23 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
Javascript Select操作大集合
2009/05/26 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
javascript常用功能汇总
2015/07/05 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
Flask解决跨域的问题示例代码
2018/02/12 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
python 常用的基础函数
2018/07/10 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
报效祖国演讲稿
2014/09/15 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
2014年保管员工作总结
2014/11/18 职场文书
redis限流的实际应用
2021/04/24 Redis
Spring中bean集合注入的方法详解
2022/07/07 Java/Android