解决Ajax加载JSon数据中文乱码问题

一、问题描述

使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢?

此处为的异步请求的配置:

Java代码

async: { enable: true, url: basePath + '/sysMenu/listSysMenu', autoParam: ["id=parentId"] }

SpringMvc中文字符处理:

Java代码

<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>

返回的结果有中文乱码:

Js代码

[ { "menuId": "880095098165986816", "menuName": "????", "parentId": "880095098165986815", "menuUrl": "http://localhost:8080/imovie-manage/sysMenu/listSysMenuUI", "menuIcon": "", "menuSort": 1, "isEnable": 1, "parentMenuName": "??", "id": "880095098165986816", "name": "????", "pId": "880095098165986815" }, { "menuId": "880095098165986817", "menuName": "???????", "parentId": "880095098165986815", "menuUrl": "http://localhost:8080/imovie-manage/sysMenu/treeSysMenuUI", "menuIcon": "", "menuSort": 1, "isEnable": 1, "parentMenuName": "??", "id": "880095098165986817", "name": "???????", "pId": "880095098165986815" } ]

二、解决方案

经过排查,发现是SpringMvc中文字符处理的supportedMediaTypes少了一种类型。

从浏览器发送的请求来看:

异步刷新使用的是post请求,但从服务器返回的时候,Content-Type为:text/plain;charset=ISO-8859-1

charset是ISO-8859-1,而不是UTF-8,而SpringMvc处理的中文乱码没有包含这种类型,所以导致中文乱码。

所以最后的解决方法是在SpringMvc中文处理加上text/plain这个类型,如下:

Java代码

<value>text/plain;charset=UTF-8</value>

具体如下:

Java代码

<property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> </list> </property>

总结

以上所述是小编给大家介绍的解决Ajax加载JSon数据中文乱码问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-11-03 00:51:12

解决Ajax加载JSon数据中文乱码问题的相关文章

PHP读取mssql json数据中文乱码的解决办法_php实例

PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. 解决办法如下: 这样,sql server 2008中的中文就可以在网页正常显示了. 如果要将中文正常插入到sql server 2008中,还要加入一条代码:$query = iconv("utf-8", "gbk//ignore", $query);//为了解决中文

做了MVC模式一年,可不要把传统模式忘记呀!ashx配合aspx实现AJAX加载JSON数据

ASHX内容: #region IHttpHandler Members     public void ProcessRequest(HttpContext context) { context.Response.ContentType = "application/x-javascript";   List<User> list = new List<User>(); for (int i = 0; i < 10; i++) { list.Add(ne

url-在JS里如何通过URL加载json数据

问题描述 在JS里如何通过URL加载json数据 我有一个函数L.mapbox.map('map','URL'),其中这个URL要怎么链接到本地的数据呢?路径应该是怎样的? 解决方案 js获取Url后的数据转换为json 解决方案二: 安全问题加载不了本地数据,url写 你服务器网站的url地址,而且不能跨域

解决ajax提交表单时中文乱码的问题

网上搜索结合自己开发过程中遇到的情况,整理一下,以备忘: Ajax表单提交数据出现乱码和解决办法    //要传递的参数   var queryString = "firstName=" + firstName + "&lastName=" + lastName                          + "&birthday=" + birthday;    function   //GET方式提交    doRequ

使用EasyUI Tree异步加载JSON数据 生成树

这几天因为工作需要,要做一个支持无限级的菜单. 我也是菜鸟一只,能想到的东西不多,所以用了Easy UI的tree组件. 不得不说,easyui确实很强大.  因为是无限级菜单,数据量可能有点大,所以考虑采用异步加载. 但是因为后台默认传来的数据是 一个实体,所以又在后台进行了JSON字符串拼接. 最后,在网上找了N多代码,然后又去问了好几个群里的网友,终于搞出来这个小东西.    一.HTML部分代码 <div id="categoryChooseDiv" title=&quo

客户端 使用XML DOM加载json数据的方法_javascript技巧

步骤: 1.引用Jquery 2.如果是IE,实例ActiveXObject:Firefox,实例DOMParser. 3.处理 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XmlDom._Default" %> <!DOCTYPE html PUBLIC &qu

WebView加载html标签中文乱码解决办法

方法1: String html="<p>我是测试用的标签</p>"; webView.loadData(html, "text/html", "utf-8"); 效果如下:   啊嘞.乱码了..试试下面的方法 方法2:  String html="<p>我是测试用的标签</p>"; // webView.loadData(html, "text/html",

jQuery Ajax 加载数据时异步显示加载动画_jquery

 ajax加载后台数据就不说的那么细了. 看下面代码首先前台上放置代码 <div id="loadgif" style="width:66px;height:66px;position:absolute;top:50%;left:50%;"> <img alt="加载中..." src="../../Images/loading1.gif"/> </div> 在js脚本文件中首先把这个图片动

jquery ajax加载提示信息与同步加载详解

个周末我一直郁闷:为什么光棍节这么值得大家庆祝.从线上到线下,从城市到农村,从高校学生到普通上班族,整个世界彻底疯狂了.如果时机来了,我想,我还是希望脱光光.滚球光棍节! 这个星期的任务主要就是一个年底活动专题的设计.主要涉及的技术还是前端ajax+jquery的使用.我一直觉得前端比后端难写.呵呵,在小流量的情况下,后端一般都不会出现什么问题,但是前端一有错误马上就可以看出来....通过这个专题页面自己对ajax的认识要提升了一点: 1.ajax的同步和异步加载.    因为ajax默认是异步