真正的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 相关文章推荐
多个表单中如何获得这个文件上传的网址实现js代码
Mar 25 Javascript
获取鼠标在div中的相对位置的实现代码
Dec 30 Javascript
一个简单的Node.js异步操作管理器分享
Apr 29 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
May 27 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
js css+html实现简单的日历
Jul 14 Javascript
Vue.js实现可配置的登录表单代码详解
Mar 29 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
Nov 20 Javascript
在微信小程序中保存网络图片
Feb 12 Javascript
监听element-ui table滚动事件的方法
Mar 26 Javascript
js console.log打印对象时属性缺失的解决方法
May 23 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
Oct 26 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实现图象锐化代码
2007/06/14 PHP
drupal 代码实现URL重写
2011/05/04 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python中DJANGO简单测试实例
2015/05/11 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
详解Python3中yield生成器的用法
2015/08/20 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
国际领先的学术出版商:Springer
2017/01/11 全球购物
财务与信息服务专业推荐信
2013/11/28 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
经典促销广告词大全
2014/03/19 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
公司的力量观后感
2015/06/05 职场文书
《去年的树》教学反思
2016/02/18 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python