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创建一个ajax关键词数据搜索实现思路
Feb 26 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
Apr 30 Javascript
JS实现的仿淘宝交易倒计时效果
Nov 27 Javascript
js实现数组冒泡排序、快速排序原理
Mar 08 Javascript
AngularJS 模块详解及简单实例
Jul 28 Javascript
js 数字、字符串、布尔值的转换方法(必看)
Apr 07 Javascript
Angular实现预加载延迟模块的示例
Oct 12 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
Apr 04 Javascript
vue form check 表单验证的实现代码
Dec 09 Javascript
轻松解决JavaScript定时器越走越快的问题
May 13 Javascript
Angular利用HTTP POST下载流文件的步骤记录
Jul 26 Javascript
微信小程序实现简单购物车功能
Dec 30 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
JavaScript实现连连看连线算法
2019/01/05 Javascript
详解Python中类的定义与使用
2017/04/11 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
pywinauto自动化操作记事本
2019/08/26 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
七年级地理教学反思
2014/01/26 职场文书
工程招投标邀请书
2014/01/30 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
温馨提示标语
2014/06/26 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android