`

jquery的ajax()函数传值中文乱码解决方法介绍

    博客分类:
  • ajax
阅读更多
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下
 
<iframe id="cproIframe_u2298924_2" src="http://pos.baidu.com/acom?adn=3&amp;adp=1&amp;at=0&amp;aurl=&amp;c01=1&amp;cad=1&amp;ccd=24&amp;cec=GBK&amp;cfv=15&amp;ch=0&amp;col=zh-CN&amp;conBW=0&amp;conOP=1&amp;cpa=1&amp;cpro_lu=1%2C%23dfe4f9%2C%23000000%2C%E5%AE%8B%E4%BD%93&amp;dai=2&amp;dis=0&amp;layout_filter=image&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DVxxd05LuAtqrdzLWQIEwStKOaVX_o1f07mAZZHvjgVWcJ0abhQvr9dUpqNi0QDKd%26wd%3D%26eqid%3Da3683b5b000eedf80000000555f24d3c&amp;ltu=http%3A%2F%2Fwww.jb51.net%2Farticle%2F31791.htm&amp;lu_161=0&amp;lunum=6&amp;n=jb51_cpr&amp;pat=1&amp;pcs=1903x955&amp;pih=80&amp;pis=10000x10000&amp;piw=130&amp;ps=491x486&amp;psr=1920x1080&amp;pss=1903x492&amp;ptbg=90&amp;ptp=0&amp;ptt=0&amp;qn=d4d4996019358114&amp;rad=&amp;rsi0=650&amp;rsi1=200&amp;rsi5=4&amp;rss0=%23FFFFFF&amp;rss1=%23FFFFFF&amp;rss2=%23000000&amp;rss3=%23444444&amp;rss4=%23008000&amp;rss5=&amp;rss6=%23e10900&amp;rss7=&amp;scale=&amp;skin=tabcloud_skin_5&amp;stid=5&amp;td_id=2298924&amp;tft=0&amp;titFF=%25E5%25BE%25AE%25E8%25BD%25AF%25E9%259B%2585%25E9%25BB%2591&amp;titFS=14&amp;titSU=0&amp;titTA=left&amp;tlt=0&amp;tn=baiduCustNativeAD&amp;tpr=1441943749714&amp;ts=1&amp;version=2.0&amp;xuanting=0&amp;dtm=BAIDU_DUP2_SETJSONADSLOT&amp;dc=2&amp;di=u2298924&amp;ti=jquery%E7%9A%84ajax()%E5%87%BD%E6%95%B0%E4%BC%A0%E5%80%BC%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95%E4%BB%8B%E7%BB%8D_jquery_%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6&amp;tt=1441943749706.66.116.117" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" align="center,center" width="650" height="200"></iframe>
复制代码代码如下:

$.ajax({ 
  dataType : ‘json',type : ‘POST',url : ‘http://localhost/test/test.do',data : {id: 1, type: ‘商品'},success : function(data){ } } ); 

问题: 
提交后后台action程序时,取到的type是乱码 
解决方法: 
方法一:提交前采用encodeURI两次编码,记住一定是两次 
1.修改以下代码 
复制代码代码如下:

data:{id:1, type:encodeURI(encodeURI(‘商品'))} 

2.在后台action里要对取得的字符串进行decode 
1、String type = request.getParameter(“type”); 
2、type = URLDecoder.decode(type, “UTF-8″); 
方法二:ajax配置contentType属性,加上charset=UTF-8 
在ajax方法中加入以下参数 
contentType: “application/x-www-form-urlencoded; charset=UTF-8″使用其它js框架或者xhr都是差不多,设置header中contentType即可, 
这里关键是charset=UTF-8,如果没有这个,是不行的,默认jQuery里的contentType是没有的 

一、测试环境 
jQuery:1.3.2 
tomcat:5.5.17 
二、测试方法 
1.使用get方式 
服务器端java代码: 
复制代码代码如下:

String name = new String(request.getParameter("name").getBytes("iso8859-1"),"utf-8"); 

客户端js代码: 
复制代码代码如下:

$.ajax({url: "2.jsp",type: "get",data: {name:"中文"},success: function(response){ 
alert(response); 
}}); 

结果:正确显示 
复制代码代码如下:

$.ajax({url: "2.jsp",type: "get",data: "name=中文",success: function(response){ 
alert(response); 
}}); 

结果:乱码 
复制代码代码如下:

$.get("2.jsp", { name: "中文" },function(response){ 
alert(response); 
}); 

结果:正确显示 
复制代码代码如下:

$.get("2.jsp", "name=中文",function(response){ 
alert(response); 
}); 

结果:乱码 

2.post方式 
服务器端java代码: 
复制代码代码如下:

request.setCharacterEncoding("UTF-8"); 
String name = request.getParameter("name"); 

客户端js代码: 
复制代码代码如下:

$.ajax({url: "3.jsp",type: "post",data: "method=testAjaxPost&name=中文",success: function(response){ 
alert(response); 
}}); 

结果:正确显示 
复制代码代码如下:

$.ajax({url: "3.jsp",type: "post",data: {name:"中文"},success: function(response){ 
alert(response); 
}}); 

结果:正确显示 
复制代码代码如下:

$.post("3.jsp", { name: "中文" },function(response){ 
alert(response); 
}); 

结果:正确显示 
复制代码代码如下:

$.post("3.jsp", "name=中文",function(response){ 
alert(response); 
}); 

结果:正确显示 
三、使用filter 
复制代码代码如下:

public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException { 
HttpServletRequest req = (HttpServletRequest) request; 
if (req.getHeader("X-Requested-With") != null && req.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest")) { 
request.setCharacterEncoding("utf-8"); 
} else { 
request.setCharacterEncoding("gbk"); 

chain.doFilter(request, response); 

jQuery在使用ajax的时候会在header中加入X-Requested-With,值为:XMLHttpRequest,filter中判断是jQuery的ajax请求时就把字符编码设为utf8,这样可以解决post提交中的中文乱码问题,不需要在代码中设置request.setCharacterEncoding("UTF-8"); 
对于get方式的中文乱码问题,建议不使用get方式提交中文,统统改为post ^-^ 

为了和prototype.js处理中文的方式一致,可以使用如下的方式,自定义header中的属性RequestType 
复制代码代码如下:

$.ajax({ 
url: "3.jsp", 
type: "post", 
data: {name:"中文"}, 
beforeSend: function(XMLHttpRequest){ 
XMLHttpRequest.setRequestHeader("RequestType", "ajax"); 
alert("开始"); 
}, 
success: function(data, textStatus){ 
alert(data); 
}, 
error: function(XMLHttpRequest, textStatus, errorThrown){ 
alert("错误:" + textStatus); 
}, 
complete: function(XMLHttpRequest, textStatus){ 
alert("完成:" + textStatus); 

}); 

filter代码如下: 
复制代码代码如下:

public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException { 
HttpServletRequest req = (HttpServletRequest) request; 
if (req.getHeader("RequestType") != null && req.getHeader("RequestType").equalsIgnoreCase("ajax"))) { 
request.setCharacterEncoding("utf-8"); 
} else { 
request.setCharacterEncoding("gbk"); 

chain.doFilter(request, response); 
分享到:
评论

相关推荐

    Asp中用法JQuery的AJAX提交中文乱码解决方法_.docx

    因此,本文将介绍如何在Asp中使用JQuery的AJAX提交中文乱码解决方法。 一、客户端页(client.html) 在客户端页中,我们使用JQuery的$.post方法来提交数据。在提交数据时,我们使用escape()函数来编码中文字符,以...

    jquery+asp ajax 中文乱码问题解决文档

    通过上述两种方法,可以有效地解决jQuery + ASP AJAX组合下出现的中文乱码问题,确保数据的正确传输和显示,提高应用的国际化水平和用户体验。无论是选择统一编码为UTF-8,还是通过修改jQuery源代码支持GB2312,...

    Ajax中文乱码问题解决方案

    在实际开发中,可以结合使用以上方法来解决Ajax中文乱码问题。例如,可以使用jQuery的`$.ajax`方法,设置`contentType`和`dataType`属性,以及在成功回调函数中处理响应数据: ```javascript $.ajax({ url: 'your-...

    GBK编码下jQuery_Ajax中文乱码解决方案

    ### GBK编码下jQuery_Ajax中文乱码解决方案 #### 背景介绍 在Web开发过程中,使用Ajax技术与服务器端交互数据时经常会遇到字符集编码的问题,尤其是在使用GBK编码的环境中,通过jQuery发起的Ajax请求往往会导致...

    jQuery Ajax传值到Servlet出现乱码问题的解决方法

    在开发Web应用时,我们经常会遇到字符编码的问题,特别是在使用jQuery AJAX与Servlet进行交互时。本文将详细讨论如何解决jQuery AJAX向Servlet传递...遵循这些步骤,一般可以有效解决AJAX传值到Servlet时的乱码问题。

    jQuery ajax方法传递中文时出现中文乱码的解决方法

    在使用jQuery的AJAX方法进行数据交互时,有时会遇到中文字符乱码的问题。这是因为浏览器、服务器和前端之间编码不一致导致的。本文将详细解释这个问题,并提供有效的解决方案。 首先,我们要理解AJAX(Asynchronous...

    jQuery中文乱码

    在讨论解决方法之前,我们首先需要了解导致jQuery中文乱码的根本原因。主要可以从以下几点分析: 1. **编码不一致**:前端与后端的字符集设置不一致是常见的乱码原因之一。例如,前端使用的是UTF-8编码,而后端则...

    JQuery AJAX提交中文乱码的解决方案

    总结来说,解决JQuery AJAX提交中文乱码问题的关键在于确保客户端和服务器端字符编码的一致性。可以通过在AJAX请求中显式地设置字符集为UTF-8来解决,从而让服务器端能够正确地解码请求中的中文字符。这不仅适用于GB...

    java认证_Ajax中文乱码问题及解决方法.doc

    【Java认证:Ajax中文乱码问题及解决方法】 在Java Web开发中,使用Ajax进行异步数据交互时,经常会遇到中文乱码的问题。这主要涉及到字符编码的处理,特别是当Ajax请求发送的数据包含中文字符时。以下是两种常见的...

    jquery自动补全示例。包括后台,中文乱码解决JS

    本示例将涵盖如何使用jQuery实现自动补全功能,包括解决中文乱码问题以及常用属性配置。 ### 1. jQuery自动补全基本原理 jQuery 自动补全基于jQuery库,通过监听用户在输入框中的输入事件,实时查询预定义的数据集...

    jquery ajax传递中文参数乱码问题及解决方法说明

    本文将详细探讨使用jQuery进行Ajax请求时,传递中文参数可能出现的乱码问题,并给出解决这些问题的方法。当使用jQuery进行Ajax通信时,数据通常需要通过GET或POST方法传输,如果参数为中文,很可能会因为编码方式不...

    JQuery AJAX 中文乱码问题解决

    解决JQuery AJAX中文乱码问题的步骤如下: 1. **设置请求编码**:在发送AJAX请求时,确保请求头中的`Content-Type`设置为`application/x-www-form-urlencoded;charset=UTF-8`。对于JQuery,你可以这样做: ```...

    Asp中使用JQuery的AJAX提交中文乱码解决方法

    在使用Asp进行Web开发过程中,通过JQuery的AJAX方法提交表单数据时,中文字符很...通过上述方法,我们可以有效地解决在Asp中使用JQuery的AJAX提交中文时出现的乱码问题,并确保Web应用能够稳定、正确地处理中文字符。

    jQuery Ajax过滤器

    本文将深入探讨jQuery中的Ajax过滤器及其在Ajaxform表单提交中的应用,以及如何解决可能出现的乱码问题。 首先,让我们理解什么是jQuery Ajax过滤器。在jQuery中,`ajaxSend`、`ajaxComplete`、`ajaxSuccess`、`...

    jquery ajax post提交数据乱码

    针对jQuery的AJAX函数,我们需要明确设置`contentType`属性来指定数据的编码格式。例如: ```javascript $.ajaxSetup({ contentType: "application/x-www-form-urlencoded; charset=utf-8" }); ``` 或者在每次...

    CakePHP使用ajax传值

    CakePHP框架中实现Ajax传值是通过AJAX (Asynchronous JavaScript and XML) 技术与后端的...通过以上知识点的掌握,开发者可以有效地在CakePHP框架中实现Ajax传值的功能,解决中文乱码和路径问题,以及优化用户体验。

    Ajax传递中文参数到后台乱码的有效解决方法

    除了上述方法,解决Ajax传递中文参数乱码问题还有其他策略。例如,可以在发送请求前调整浏览器的请求头,指定字符集。在jQuery的Ajax设置中,可以通过`contentType`属性来设置: ```javascript $.ajax({ url: '...

    JQuery发送ajax请求时中文乱码问题解决

    总结以上所述,要解决JQuery发送ajax请求时出现的中文乱码问题,需要从两个方面着手:确保Web项目的web.xml配置文件中设置了正确的字符编码过滤器,以及在JSP页面中设置了正确的字符编码,并使用POST方法发送ajax...

Global site tag (gtag.js) - Google Analytics