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文件优化
Dec 08 Javascript
A标签中通过href和onclick传递的this对象实现思路
Apr 19 Javascript
原生js操作checkbox用document.getElementById实现
Oct 12 Javascript
JavaScript获取指定元素位置的方法
Apr 08 Javascript
javascript实现回到顶部特效
May 06 Javascript
js实现简易的单数字随机抽奖(0-9)
Mar 19 Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
JavaScript手机振动API
Jun 11 Javascript
JavaScript操作表单实例讲解(上)
Jun 20 Javascript
微信小程序 如何引入外部字体库iconfont的图标
Jan 31 Javascript
Vue.js的模板语法详解
Feb 16 Javascript
jquery插件实现搜索历史
Apr 24 jQuery
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
PHP4(windows版本)中的COM函数
2006/10/09 PHP
xajax写的留言本
2006/11/25 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
理解Python中的With语句
2015/02/02 Python
python中的随机函数小结
2018/01/27 Python
区分python中的进程与线程
2020/08/13 Python
python中yield的用法详解
2021/01/13 Python
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
Linux常见面试题
2013/03/18 面试题
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
欢迎家长标语
2014/10/08 职场文书
2014年连锁店圣诞节活动方案
2014/12/09 职场文书
业务员岗位职责范本
2015/04/03 职场文书
工程进度款催款函
2015/06/24 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫