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 检测键盘按键信息及键码值对应介绍
Jan 03 Javascript
jQuery实现简单的网页换肤效果示例
Sep 18 Javascript
浅析vue component 组件使用
Mar 06 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
Apr 07 Javascript
js实现添加删除表格(两种方法)
Apr 27 Javascript
微信小程序 支付功能(前端)的实现
May 24 Javascript
常见的浏览器Hack技巧整理
Jun 29 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
Node.js中的cluster模块深入解读
Jun 11 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
Oct 01 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
微信小程序button标签open-type属性原理解析
Jan 21 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
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
轻松修复Discuz!数据库
2008/05/03 PHP
php设计模式小结
2013/02/15 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
jQuery设计思想
2017/03/07 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
使用python实现BLAST
2018/02/12 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
python获取linux系统信息的三种方法
2020/10/14 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
大学生四个方面的自我评价
2013/09/19 职场文书
英语专业毕业个人求职自荐信
2013/09/21 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
期中考试复习计划
2015/01/19 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
公司档案管理制度
2015/08/05 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python