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 相关文章推荐
javascript控制frame,iframe的src属性代码
Dec 31 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
Mar 03 Javascript
js判断背景图片是否加载成功使用img的width实现
May 29 Javascript
jquery封装的对话框简单实现
Jul 21 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
javascript:json数据的页面绑定示例代码
Jan 26 Javascript
JavaScript的9种继承实现方式归纳
May 18 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
May 17 Javascript
JavaScript中关于class的调用方法
Nov 28 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
微信小程序设置滚动条过程详解
Jul 25 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
也谈截取首页新闻 - 范例
2006/10/09 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
PHP数组函数知识汇总
2016/05/12 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
Python装饰器知识点补充
2018/05/28 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
详解python中的模块及包导入
2019/08/30 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Python实现汇率转换操作
2020/05/03 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
教师试用期自我鉴定
2014/02/12 职场文书
行政司机岗位职责
2015/04/10 职场文书
婚礼答谢词范文
2015/09/29 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
go web 预防跨站脚本的实现方式
2021/06/11 Golang
Linux中sftp常用命令整理
2022/06/28 Servers