JQuery的Ajax中Post方法传递中文出现乱码的解决方法


Posted in Javascript onOctober 21, 2014

本文实例讲述了JQuery中Post传递中文出现的解决方法,即乱码ajax与jquery.ajax中文参数post传递乱码处理方法。分享给大家供大家参考。具体分析如下:

问题一:

今天在做项目时,需要用到Ajax,之前我在用GET方式传递中文参数时,只需要在后台程序中设置页面编码为GB2312即中文能正常显示,可是这次由于表单项目较多,不适合用GET方式传递,只能用POST方式,但发现后台程序中设置编码为GB2312时中文还是显示的乱码。经过一番研究问题才最终得到解决。

解决方法:

解决此问题的方法非常简单,只需要在JS处理参数时用escape()函数处理一下即可,而且不需要再用unescape()解码,这个方法适合POST和GET方式,具体的Ajax代码这里我不例出,这里给出用escape()函数处理参数时的代码:

var htmer ="getcode="+escape(getcode)+"&Content="+escape(Content);
 

通常我们在处理Ajax的时候会在这里直接获取参数的值,为了使中文参数不是乱码,我们只需要用escape()函数对参数处理下即可。

问题二:

当网站页面不是utf-8编码时,ajax提交的中文便会变成乱码。

解决方法如下:

找到jquery.js里的contentType:application/x-www-form-urlencoded,将它改成contentType:application/x-www-form-urlencoded; charset=UTF-8就可以了。

原因:未指定charset时,jquery使用ISO-8859-1,ISO8859-1,通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符。jquery的ajax根本没有考虑到国际化的问题,而使用了欧洲的字符集,所以传递中文时才会出现乱码

我很久以前一直在使用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/网页特效" 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>

此外,由于Ajax的默认汉字编码是utf-8,因此比较保险的方法是保证所涉及的页面统一编码格式为utf-8。

希望本文所述对大家基于的jQuery的Ajax程序设计有所帮助。

Javascript 相关文章推荐
JS 日期验证正则附asp日期格式化函数
Sep 11 Javascript
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
jQuery实现动画效果的简单实例
Jan 27 Javascript
js实现格式化金额,字符,时间的方法
Feb 26 Javascript
jQuery图片轮播滚动切换代码分享
Apr 20 Javascript
Bootstrap CSS组件之导航(nav)
Dec 17 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
Dec 19 Javascript
js实现下拉框效果(select)
Mar 28 Javascript
Vue中保存数据到磁盘文件的方法
Sep 06 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 Javascript
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
jquery中post方法用法实例
Oct 21 #Javascript
js调试工具Console命令详解
Oct 21 #Javascript
JS中FRAME的操作问题实例分析
Oct 21 #Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
Oct 20 #Javascript
Javascript+CSS实现影像卷帘效果思路及代码
Oct 20 #Javascript
利用jquery操作Radio方法小结
Oct 20 #Javascript
利用a标签自动解析URL分析网址实例
Oct 20 #Javascript
You might like
PHP操作数组相关函数
2011/02/03 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
什么是PHP7中的孤儿进程与僵尸进程
2019/04/14 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
jquery 元素相对定位代码
2010/10/15 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
python 文件和路径操作函数小结
2009/11/23 Python
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
在Python中使用模块的教程
2015/04/27 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
C#面试题问题集
2016/04/02 面试题
信息技术研修心得体会
2016/01/08 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
Java并发编程必备之Future机制
2021/06/30 Java/Android
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers