真正的JQuery.ajax传递中文参数的解决方法


Posted in Javascript onMay 28, 2011

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

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

真正的JQuery.ajax传递中文参数的解决方法
不同之处在于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.ajax传递中文参数的解决方法
只需要简单的将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 相关文章推荐
jQuery的12招常用技巧分享
Aug 08 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
javascript版2048小游戏
Mar 18 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
Nov 29 Javascript
实例详解jQuery结合GridView控件的使用方法
Jan 04 Javascript
JS及PHP代码编写八大排序算法
Jul 12 Javascript
利用jQuery对无序列表排序的简单方法
Oct 16 Javascript
浅谈javascript中的事件冒泡和事件捕获
Dec 28 Javascript
js实现模糊匹配功能
Feb 15 Javascript
AngularJS路由删除#符号解决的办法
Sep 28 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
Mar 03 Javascript
JS document form表单元素操作完整示例
Jan 13 Javascript
jquery 图片上传按比例预览插件集合
May 28 #Javascript
使用jquery实现select添加实现后台权限添加的效果
May 28 #Javascript
jQuery 源码分析笔记(2) 变量列表
May 28 #Javascript
Jquery下:nth-child(an+b)的使用注意
May 28 #Javascript
鼠标滑上去后图片放大浮出效果的js代码
May 28 #Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 #Javascript
actionscript与javascript的区别
May 25 #Javascript
You might like
PHP 5.0 Pear安装方法
2006/12/06 PHP
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
JavaScript类和继承 prototype属性
2010/09/03 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
Python进阶-函数默认参数(详解)
2017/05/18 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
Tomcat弱口令复现及利用
2022/05/06 Servers
nginx之内存池的实现
2022/06/28 Servers