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数组处理多个字符串的连接问题
Aug 20 Javascript
jQuery事件绑定.on()简要概述及应用
Feb 07 Javascript
js中哈希表的几种用法总结
Jan 28 Javascript
7个让JavaScript变得更好的注意事项
Jan 28 Javascript
JS实现在页面随时自定义背景颜色的方法
Feb 27 Javascript
jquery ui dialog替代confirm实例分析
Jan 25 Javascript
js HTML5 Ajax实现文件上传进度条功能
Feb 13 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 Javascript
vue2.0+webpack环境的构造过程
Nov 08 Javascript
基于javascript 显式转换与隐式转换(详解)
Dec 15 Javascript
AngularJS修改model值时,显示内容不变的实例
Sep 13 Javascript
对 Vue-Router 进行单元测试的方法
Nov 05 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数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
JS模块与命名空间的介绍
2013/03/22 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
React如何避免重渲染
2018/04/10 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
写了个监控nginx进程的Python脚本
2012/05/10 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python文件编写好后如何实践
2020/07/07 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
优秀通讯员事迹材料
2014/01/28 职场文书
远程研修随笔感言
2014/02/10 职场文书
关于安全演讲稿
2014/05/09 职场文书
员工生日活动方案
2014/08/24 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
简历自我评价模板
2015/03/11 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL