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 相关文章推荐
网页广告中JS代码的信息监听示例
Apr 02 Javascript
JavaScript与HTML的结合方法详解
Nov 23 Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 Javascript
浅谈Javascript中的函数、this以及原型
Oct 09 Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 Javascript
Angular2.js实现表单验证详解
Jun 23 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
Sep 21 Javascript
原生js实现仿window10系统日历效果的实例
Oct 31 Javascript
基于Bootstrap实现城市三级联动
Nov 23 Javascript
JavaScript面向对象程序设计创建对象的方法分析
Aug 13 Javascript
es6 symbol的实现方法示例
Apr 02 Javascript
layui layer select 选择被遮挡的解决方法
Sep 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
生成静态页面的PHP类
2006/11/25 PHP
相对路径转化成绝对路径
2007/04/10 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
php无限级分类实现方法分析
2016/10/19 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
Django如何配置mysql数据库
2018/05/04 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
python中加背景音乐如何操作
2020/07/19 Python
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
软件测试英文面试题
2012/10/14 面试题
预备党员入党思想汇报
2014/01/04 职场文书
明信片寄语大全
2014/04/08 职场文书
道路施工安全责任书
2014/07/24 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers