真正的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 相关文章推荐
在textarea中屏蔽js的某个function的javascript代码
Apr 20 Javascript
JavaScript 序列化对象实现代码
Dec 18 Javascript
利用a标签自动解析URL分析网址实例
Oct 20 Javascript
js的toLowerCase方法用法实例
Jan 27 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
node中使用es5/6以及支持性与性能对比
Aug 11 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
Dec 14 Javascript
vue动态路由配置及路由传参的方式
May 23 Javascript
三种Webpack打包方式(小结)
Sep 19 Javascript
微信小程序实现文字跑马灯
May 26 Javascript
js实现简单扫雷
Nov 27 Javascript
微信小程序中data-key属性之数据传输(经验总结)
Aug 22 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
laravel安装和配置教程
2014/10/29 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
javascript 简练的几个函数
2009/08/29 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
详解python中的异常捕获
2020/12/15 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
家长评语大全
2014/01/22 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
六五普法规划实施方案
2014/03/21 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
应届生自荐信
2014/06/30 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
花田少年史观后感
2015/06/16 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python