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 相关文章推荐
jQeury淡入淡出需要注意的问题
Sep 08 Javascript
Jquery刷新页面背景图片随机变换的实现方法
Mar 15 Javascript
JQuery each打印JS对象的方法
Nov 13 Javascript
关于js内存泄露的一个好例子
Dec 09 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
Jun 05 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
详解handlebars+require基本使用方法
Dec 21 Javascript
如何获取元素的最终background-color
Feb 06 Javascript
详解JavaScript按概率随机生成事件
Aug 02 Javascript
vue路由嵌套的SPA实现步骤
Nov 06 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
May 08 Javascript
详解Webpack + ES6 最新环境搭建与配置
Jun 04 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/10/09 PHP
php目录操作实例代码
2014/02/21 PHP
PHP对象相关知识总结
2017/04/09 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
用Python中的字典来处理索引统计的方法
2015/05/05 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
班风口号
2014/06/18 职场文书
走群众路线学习心得体会
2014/10/31 职场文书
办公室个人总结
2015/02/28 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
Python实现拼音转换
2021/06/07 Python
OpenCV 图像梯度的实现方法
2021/07/25 Python
python入门学习关于for else的特殊特性讲解
2021/11/20 Python
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android