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 相关文章推荐
遍历jquery对象的代码分享
Nov 02 Javascript
javascript中的循环语句for语句深入理解
Apr 04 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
js去除浏览器默认底图的方法
Jun 08 Javascript
分享15个大家都熟知的jquery小技巧
Dec 02 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
Angular 5.0 来了! 有这些大变化
Nov 15 Javascript
详解使用React进行组件库开发
Feb 06 Javascript
vue如何限制只能输入正负数及小数
Jul 04 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
Oct 14 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
Nov 04 Javascript
Vue 打包体积优化方案小结
May 20 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 IF ELSE简化/三元一次式的使用
2011/08/22 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php筛选不存在的图片资源
2015/04/28 PHP
微信支付扫码支付php版
2016/07/22 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
python3实现短网址和数字相互转换的方法
2015/04/28 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
Python多分支if语句的使用
2020/09/03 Python
python文件排序的方法总结
2020/09/13 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
关于人生的感言
2014/01/17 职场文书
宿舍打麻将检讨书
2014/01/24 职场文书
预备党员承诺书
2014/03/25 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
工作自我评价范文
2015/03/05 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技