JQuery.ajax传递中文参数的解决方法 推荐


Posted in Javascript onMarch 28, 2011

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

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

不同之处在于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的代码加以修改,加上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 17 Javascript
基于JQuery制作的产品广告效果
Dec 08 Javascript
js Array对象的扩展函数代码
Apr 24 Javascript
JavaScript中的console.trace()函数介绍
Dec 29 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
May 06 Javascript
利用python分析access日志的方法
Oct 26 Javascript
让div运动起来 js实现缓动效果
Jul 06 Javascript
深入了解js原型模式
May 30 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
原生JS实现留言板
Mar 26 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
Jul 17 Javascript
jQuery中调用WebService方法小结
Mar 28 #Javascript
利用jQuery接受和处理xml数据的代码(.net)
Mar 28 #Javascript
jquery.combobox中文api和例子,修复了上面的小bug
Mar 28 #Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
Sep 12 #Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
Mar 28 #Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
Mar 28 #Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
Mar 28 #Javascript
You might like
用 php 编写的日历
2006/10/09 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
模仿jQuery each函数的链式调用
2009/07/22 Javascript
jQuery 操作下拉列表框实现代码
2010/02/22 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
Python初学者常见错误详解
2019/07/02 Python
Django models.py应用实现过程详解
2019/07/29 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
公务员综合考察材料
2014/02/01 职场文书
简历的自我评价
2014/02/03 职场文书
文员岗位职责范本
2014/03/08 职场文书
2014年母亲节寄语
2014/05/07 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
2014年体育工作总结
2014/11/24 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
教师工作表现评语
2014/12/31 职场文书
贫困证明怎么写
2015/06/16 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
安全教育日主题班会
2015/08/13 职场文书
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android