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 相关文章推荐
不用ajax实现点击文字即可编辑的方法
Dec 16 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
Aug 24 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
Sep 22 Javascript
面向对象设计模式的核心法则
Nov 10 Javascript
js中settimeout方法加参数
Feb 28 Javascript
javascript实现详细时间提醒信息效果的方法
Mar 11 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 Javascript
Node.js的Koa实现JWT用户认证方法
May 05 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
Jul 10 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 Javascript
在vue中嵌入外部网站的实现
Nov 13 Javascript
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(8) php 数组
2010/03/05 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
两种php实现图片上传的方法
2016/01/22 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
制作特殊字的脚本
2006/06/26 Javascript
jQuery 入门讲解1
2009/04/15 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
Python实现115网盘自动下载的方法
2014/09/30 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Django内容增加富文本功能的实例
2017/10/17 Python
详解Python循环作用域与闭包
2019/03/21 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
Python爬虫开发与项目实战
2020/12/16 Python
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
数控技术专业推荐信
2013/11/01 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
元旦晚会活动总结
2014/07/09 职场文书
财务检查整改报告
2014/11/06 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python
python高温预警数据获取实例
2022/07/23 Python