许多人在使用JQuery.ajax方法时肯定会遇到一个问题。在编码不是UTF-8的时候,当传递的参数里有中文的时候,服务端Request的
时候都会出现乱码。本人最近也遇到了需要传递中文参数的问题。在网上搜索一下,复制粘贴发的到处都是的“终极”“解决方案”无非就是
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>
分享到:
相关推荐
总结起来,解决JQuery.ajax传递中文参数乱码问题的核心在于: 1. 在`$.ajax`设置中指定`contentType: "application/x-www-form-urlencoded; charset=UTF-8"`。 2. 服务器端的页面响应编码(如ASP.NET的`...
总结来说,当遇到JQuery ajax传递中文参数时出现乱码问题,开发者需要在ajax请求中显式声明contentType为`application/x-www-form-urlencoded;charset=UTF-8`。这样,无论页面编码是什么,中文数据都能被正确编码和...
本篇文章将深入探讨如何使用jQuery的ajax方法向ASP.NET MVC的Action传递参数。 首先,了解jQuery的ajax方法的基本结构。这是一个示例: ```javascript $.ajax({ url: 'yourUrl', type: 'POST', // 或 'GET' ...
本文将深入讲解如何在jQuery AJAX中向后台传递数组参数,并提供示例代码。 首先,理解问题的关键在于JavaScript数组在传递给后台时,如果数组内包含的是对象,会被转化为`[object Object]`的字符串形式。这是因为...
jQuery提供了方便的方法来处理JSON数据,包括`$.getJSON()`和`$.ajax()`等函数,可以方便地从服务器获取JSON数据并将其转化为JavaScript对象,或者将JavaScript对象转换为JSON字符串发送到服务器。 **jQuery的get...
jQuery PrintArea.js插件是一个优秀的解决方案,它允许开发者轻松地实现这一需求。本文将深入探讨jQuery PrintArea.js 2.4.0版本的核心特性和使用方法。 一、jQuery PrintArea.js概述 jQuery PrintArea.js是一款轻...
"jquery.params.js"是一个特定的jQuery插件,专门用于处理URL参数,使得在进行Ajax请求或者页面跳转时,传递参数变得更加方便。 首先,我们要了解URL参数的基本概念。URL(统一资源定位符)是网页地址,它通常由...
例如,你可以使用`.fileDownload()`方法触发文件下载,并传递URL和一些可选参数。在处理文件下载时,还可以监听各种回调事件,以便进行状态跟踪和错误处理。 总的来说,"前端项目-jquery.fileDownload.zip"为前端...
$.ajax json 数据传递方法是使用 jQuery 库实现的异步数据传递方法,通过将 JSON 数据封装在 $.ajax 对象中,并将其作为参数传递给服务器端脚本,以实现客户端和服务器端之间的数据交互。 在前台代码中,首先定义了...
**数据交互**在jQuery的Ajax方法中,可以通过`data`参数传递数据到服务器,可以是JSON、序列化的字符串或者查询字符串。同时,服务器返回的数据会在`success`回调函数中处理,通常以JSON格式接收,便于前端解析和...
在这个Demo中,我们假设前端使用jQuery的$.ajax()方法发送请求。 ```javascript // 前端jQuery示例 $.ajax({ url: '/api/data', type: 'POST', data: { key1: 'value1', key2: 'value2' }, success: function...
jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理和Ajax交互等任务。使用jQuery,开发者可以更高效地编写JavaScript代码,并且兼容多种浏览器。 ### 3. 使用`jquery.base64.js` 要使用`jquery.base64....
这通常是通过`jQuery.ajax()`或者简化的`$.getJSON()`等方法完成的。以下是一个简单的示例,展示如何向服务器发送GET请求,获取JSON格式的建议数据: ```javascript source: function(request, response) { $.ajax...
《jQuery Messager.js:构建高效页面底层弹出框的利器》 在网页开发中,用户交互体验至关重要,其中一种常见的需求就是实现各种形式的消息提示或弹窗功能。jQuery Messager.js 正是一款专为实现此类功能而设计的...
- **$.ajaxForm()**:这是`jquery.form.js`的主要方法,用于绑定表单元素,实现Ajax方式的文件上传。它可以接收一个回调函数,当上传成功或失败时执行。 - **$.ajaxSubmit()**:这个方法可以直接触发表单的Ajax提交...
在JavaScript的世界里,jQuery是一个非常流行的库,它简化了DOM操作、事件处理和Ajax交互等任务。`jquery.params.js`是一个jQuery插件,专门用于处理URL参数和在多个HTML页面间传递数据,无需通过服务器作为中介。这...
在实际应用中,开发者需要配置jQuery.Gantt的参数,如任务列表、依赖关系、时间范围等。这些信息可以通过JSON格式的数据输入,也可以动态地从服务器获取。此外,为了适应不同的需求,jQuery.Gantt还支持自定义样式和...
在jQuery的Ajax方法中,`data`参数是一个非常关键的部分,它用于传递要发送到服务器的数据。本篇文章将深入探讨`data`参数的不同类型及其使用方法。 首先,`data`参数可以接受多种类型的数据,包括JavaScript对象、...