ajax返回值 json 乱码 解决方案

ajax的返回值一直乱码,

试过各种ContentType设定utf-8的方法,就是搞不定,

而且明明返回值是json字符串,一直出现ajax取得返回值类型为object。

最后查资料发现,

SpringMVC使用 @ResponseBody注解,返加字符串不做任何处理时,有可能会出现乱码问题。

这是由于 StringHttpMessageConverter 类中,默认采用的字符集是 ISO-8859-1。

public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {   

        public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");

解决办法:

那么要解决乱码问题,需要改变 StringHttpMessageConverter 中的默认字符集,本文中以UTF-8为例。

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>text/plain;charset=UTF-8</value>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </list>
        </property>
    </bean>
    
    <!-- mvc:annotation-driven/-->
    <mvc:annotation-driven validator="validator"/>
注:配置必须在 <mvc:annotation-driven /> 之前,否则将不会启效;<mvc:annotation-driven />
会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter。
时间: 2024-10-05 23:19:21

ajax返回值 json 乱码 解决方案的相关文章

jquery操作Ajax返回的JSON值

$.post( 'XXX.php', { col: value }, function(data) { var getData = eval( "(" + data + ")" ); //必须用括号,真蛋疼 alert( getData.xx ); } ); jquery操作Ajax返回的JSON值,布布扣,bubuko.com

jquery ajax和php实现返回值 json类型

js页面 $.ajax({ type: “POST”, dataType: ‘json’, url: “add_vote.php”, data: “touid=”+uid+”&tousername=”+username, success: function(msg){ //json解析方法一 var dataObj=eval("("+msg+")");//转换为json对象 alert(dataObj.goods_list);//输出root的子对象数量 /

Ajax返回值之XML、json类型

Ajax返回值之XML.json类型 2015-01-29 ? 注意:Ajax默认是不能跨域的,在最新的2.0里是可以跨域,但是需要对方应答. ? Ajax返回值之XML类型 <HTML代码> <html> ????<head> ????????<title>Ajax返回return</title> ????<script> function?createXHR(){ ????var?xhr?=?null; ????if(window

js获取ajax返回值

z = $.ajax({url:"__URL__/add/",type:'POST',dataType:"json",async:false,cache:false,data:"step=ajax&ajax_type=checkEmail&email="+email,}).responseText;js获取ajax返回值,码迷,mamicode.com

Ajax返回值问题思考

Ajax请求,请求之后,我们需要得到返回值,或一个,或多个,然后根据返回值进行下一步的逻辑判断,那么返回值问题上,如果我们只是单一的请求后,返回一个值,那么我们可以直接接收,然后判断处理,比如: success: function (data) { if(data == 什么什么) { // 就怎么怎么 } else { // 就怎么怎么 } } 如果Ajax请求需要得到多个返回值呢,既然要返回多个值,那么就涉及到了前台接收解析多个值的问题,好像目前我们碰见过的,json是最好的处理方式之一了,

一种Javascript解释ajax返回的json的好方法

通常ajax请求返回的格式为json或者xml,如果返回的是json,则可以通过转换成javascript对象进行操作,如下: 1.ajax请求的controller实现 @RequestMapping public void getLocations(@RequestParam String location, PrintWriter printWriter) { if (StringUtils.isEmpty(location)) { return; } List<Location> lo

loadrunner获取返回值为乱码

找了很多方法,utf-8也设置了,还是不行,只有有转码方法了 web_reg_save_param("res2", "LB=\"msg\":\"", "RB=\"", "Search=Body", LAST); lr_start_transaction("Web_注册_register_bean"); web_custom_request("web_cust

Jquery JavaScript解析Ajax返回的json数据(转)

最近在用jquery的ajax方法传递接收json数据时发现一个问题,那就是返回的data数据,有时候可以直接作为json数据使用,可有时候又不行. 经过网友指出,这个问题已经有了比较明确的结论,那就是jquery ajax方法的complete方法是不会处理dataType的,所以如果你是在complete里面试图直接用json数据是不可行的,必须先通过eval. $.ajax方法如下: Java代码 $.ajax({ type: “POST”, url: ctxRoot+’FolderAct

JS模态窗口返回值兼容问题解决方案

因系统要兼容原IE已使用的关闭方法,经调试测得,需对window.dialogArguments进行再较验,不然易出问题. function OKEnd(vals) { if (vals == null) vals = "TRUE"; if (typeof (window.opener) == "undefined") { if (typeof (window.dialogArguments) != "undefined") { if (wind