GVKun编程网logo

ajax请求中文参数在action中乱码问题(ajax传递中文参数乱码)

27

这篇文章主要围绕ajax请求中文参数在action中乱码问题和ajax传递中文参数乱码展开,旨在为您提供一份详细的参考资料。我们将全面介绍ajax请求中文参数在action中乱码问题的优缺点,解答aj

这篇文章主要围绕ajax请求中文参数在action中乱码问题ajax传递中文参数乱码展开,旨在为您提供一份详细的参考资料。我们将全面介绍ajax请求中文参数在action中乱码问题的优缺点,解答ajax传递中文参数乱码的相关问题,同时也会为您带来ajax get提交中文参数乱码、Ajax Post请求中文乱码问题解决方案、AJAX 中文参数 乱码问题、ajax中文参数乱码&ajax缓存的解决方法的实用方法。

本文目录一览:

ajax请求中文参数在action中乱码问题(ajax传递中文参数乱码)

ajax请求中文参数在action中乱码问题(ajax传递中文参数乱码)


ajax内容

var plateNumber = $("#plateNumber").val();
var vehicleLab = $("#vehicleLab").val();
$.ajax({
method : "post",
url : "",
dataType : "json",
cache : false,
data : {
"plateNumber" : encodeURI(plateNumber),
"vehicleLab" : encodeURI(vehicleLab)
},
success : function(data) {

}
});


action中写法

String plateNumberstr = URLDecoder.decode(plateNumber,"UTF-8"); String vehicleLabstr = URLDecoder.decode(vehicleLab,"UTF-8");

ajax get提交中文参数乱码

ajax get提交中文参数乱码

总结

以上是小编为你收集整理的ajax get提交中文参数乱码全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Ajax Post请求中文乱码问题解决方案

Ajax Post请求中文乱码问题解决方案

本文介绍解决ajax post中文乱码的问题的方案,如果你的web应用中全部使用utf-8编码,那将不会有这上问题。这里主要是解决那些要求页面编码是gbk或 gb2312等非utf-8编码(有时候由于历史遗留问题,就会有这种需求)的web应用遇到的ajax post中文乱码问题。
通常,对于这个问题有三种解决方法:

  • 通过前端页面在ajax post数据时把数据使用encodeURIComponent方法编码两次,后台以utf-8编码取出,使用 java.net.URLDecoder.decode方法解码一次后即可取得正确的数据。----这种方式网上见到的最多,但这样做前端和后台的藕合太 大,而且后台加入的这个解码用的代码与业务逻辑无关,却可能要写在业务逻辑的代码里,显然不是个很好的方案。由其对于大的系统来说,必须跟前端和后台的开 发人员协调好,否则容易出现问题。
  • 第二种方案,比第一次方案前后台的藕合要小,类似于命令模式。通过一个Filter,根据请求的url中的标记用参数来判断是否要把request的编码设置为UTF-8,可以参考我的另一篇博客:http://hjg1988.iteye.com/blog/467715。----这个方案是通过前台向后台发出一条命令来告诉后台对编码进行处理,对前台的要求降低了。注意其中后台是通过request.getQueryString方法而不是getParameter方法来判断是否含有标记。
  • 第三种方案就是我要介绍的方案,与第二种相同,主要问题就是如何让后台知道这是一个ajax post请求,而不是普通的请求。之前因为不知道如何在后台知道前台发来的请求是ajax post的,所以要求前台发出一个命令。而这个方案是我在看到了http://www.iteye.com/topic/336790这个帖子后才知道还有这种方式可以知道是否是一个ajax post请求。下面是我修改过后的方案:


  • Java代码
    1. packagecom.hjg.demo.filter;
    2. importjava.io.IOException;
    3. importjavax.servlet.Filter;
    4. importjavax.servlet.FilterChain;
    5. importjavax.servlet.FilterConfig;
    6. importjavax.servlet.servletexception;
    7. importjavax.servlet.ServletRequest;
    8. importjavax.servlet.ServletResponse;
    9. importjavax.servlet.http.HttpServletRequest;
    10. /**
    11. *针对ajaxpost请求进行编码设置,因为Ajaxpost请求总是UTF-8的,<br/>
    12. *这有可能与应用程序的整体编码设置不一致(由需求决定,比如所有页面<br/>
    13. *统一使用GBK),所以如果不加处理可能会造成中文乱码。<br/>
    14. *这个Filter不对应用程序的整体编码进行过滤,即不会影响整体编码设置<br/>
    15. *(Web框架会对编码进行设置),只需要把这个Filter配置在所有Filter之前<br/>
    16. *
    17. *@authorjinggang.huangjg
    18. *
    19. */
    20. publicclassAjaxPostEncodingFilterimplementsFilter{
    21. /**ajaxpost请求的默认contenttype*/
    22. publicstaticfinalStringAJAX_POST_CONTENT_TYPE_DEFAULT="application/x-www-form-urlencoded";
    23. /**ajaxpost请求的编码,W3C标准为UTF-8*/
    24. publicstaticfinalStringAJAX_POST_ENCODE="UTF-8";
    25. privateStringajaxPostContentType;
    26. publicvoiddoFilter(ServletRequestreq,ServletResponseres,
    27. FilterChainchain)throwsIOException,servletexception{
    28. HttpServletRequestrequest=(HttpServletRequest)req;
    29. StringrequestedWith=request.getHeader("x-requested-with");
    30. StringcontentType=request.getContentType();
    31. //表明是一个Ajax的post请求,并且不是使用隐藏的iframe实现的
    32. if("XMLHttpRequest".equalsIgnoreCase(requestedWith)&&null!=contentType
    33. &&contentType.toLowerCase().startsWith(ajaxPostContentType.toLowerCase())){
    34. request.setCharacterEncoding(AJAX_POST_ENCODE);
    35. /*
    36. *调用getParameter方法可以让在此之后调用的setCharacterEncoding方法失效,
    37. *参数可以为任何值(canbeanything)
    38. *可以防止WEB框架或用户程序再次将其设置回GBK等其它编码,
    39. *因为有些情况下,用户的要求的页面编码不是UTF-8而是GBK或其它的
    40. */
    41. request.getParameter("canbeanything");
    42. }
    43. chain.doFilter(req,res);
    44. }
    45. publicvoidinit(FilterConfigfilterConfig)throwsservletexception{
    46. ajaxPostContentType=filterConfig.getinitParameter("ajaxPostContentType");
    47. if(null==ajaxPostContentType){
    48. ajaxPostContentType=AJAX_POST_CONTENT_TYPE_DEFAULT;
    49. }
    50. }
    51. publicvoiddestroy(){
    52. }
    53. }

    这是web.xml的配置:
    Xml代码
    1. <filter>
    2. <filter-name>ajax-post-encoding</filter-name>
    3. <filter-class>com.hjg.demo.filter.AjaxPostEncodingFilter</filter-class>
    4. <!--
    5. 以下配置可以省略,ajaxPostContentType默认为application/x-www-form-urlencoded,
    6. 除非你的ajaxpost请求设置了不同的contentType
    7. -->
    8. <!--
    9. <init-param>
    10. <param-name>ajaxPostContentType</param-name>
    11. <param-value>application/x-www-form-urlencoded</param-value>
    12. </init-param>
    13. -->
    14. </filter>
    这个方案就对前端没有任何要求,在使用ajax post数据时,不需要做任何处理(当然,前提是你要把contentType设置为application/x-www-form-urlencoded——不过在ajax post数据时本身就应该有这个要求)。
  • AJAX 中文参数 乱码问题

    AJAX 中文参数 乱码问题


    1)发送路径中的参数有中文,在服务器段接收参数值是乱码
    例如:
    var url="a.jsp?name=小李";
    xmlHTTP.open ("post",url,true);
    解决办法:
    利用javascript的提供的escape()或encodeURI()方法
    例如:
    客户端:
    var url="a.jsp?name=小李";
    url=encodeURI(url);
    url=encodeURI(url); //两次,很关键
    /********************************************/
    服务器端:
    String name = request.getParameter("name");
    name = java.net.URLDecoder.decode("name","UTF-8");

    2)返回来的responseText或responseXML的值中含有中文是乱码
    原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。
    解决办法:在服务器指定发送数据的格式:
    在jsp文件中:
    response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
    或是
    response.setContentType("text/xml;charset=UTF-8");//返回的xml文件

    总结:1)ajax提交数据的格式默认为utf-8,利用javascript的提供的escape()或encodeURI()方法.在服务器端接收的时候要使用java.net.URLDecoder.decode("","UTF-8")方法进行解码.
    2)xtmlhttp 返回的数据默认的字符编码是utf-8,所以服务器要向客户端发送数据的时候,也要采用utf-8编码
    如果上述方法仍然解决不了乱码问题,那你尝试一下把jsp,htm,java文件用UTF-8编码格式保存.
    总之:前后台数据交互都采用utf-8编码就行了.

    ---------------------------------

    如果用escape()将中文参数编码后总是抛出java.io.CharConversionException: isHexDigit异常。

    只能用encodeURL()两次编码

    文章来源:http://www.jb51.cc/article/p-vxjsuigu-mk.html

    ajax中文参数乱码&ajax缓存的解决方法

    ajax中文参数乱码&ajax缓存的解决方法

    总结

    以上是小编为你收集整理的ajax中文参数乱码&ajax缓存的解决方法全部内容。

    如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

    今天的关于ajax请求中文参数在action中乱码问题ajax传递中文参数乱码的分享已经结束,谢谢您的关注,如果想了解更多关于ajax get提交中文参数乱码、Ajax Post请求中文乱码问题解决方案、AJAX 中文参数 乱码问题、ajax中文参数乱码&ajax缓存的解决方法的相关知识,请在本站进行查询。

    本文标签: