解決Ajax加載JSon數(shù)據(jù)中文亂碼問(wèn)題
一、問(wèn)題描述
使用zTree的異步刷新父級(jí)菜單時(shí),服務(wù)器返回中文亂碼,但項(xiàng)目中使用了SpringMvc,已經(jīng)對(duì)中文亂碼處理,為什么還會(huì)出現(xiàn)呢?
此處為的異步請(qǐng)求的配置:
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>
返回的結(jié)果有中文亂碼:
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" } ]
二、解決方案
經(jīng)過(guò)排查,發(fā)現(xiàn)是SpringMvc中文字符處理的supportedMediaTypes少了一種類型。
從瀏覽器發(fā)送的請(qǐng)求來(lái)看:
異步刷新使用的是post請(qǐng)求,但從服務(wù)器返回的時(shí)候,Content-Type為:text/plain;charset=ISO-8859-1
charset是ISO-8859-1,而不是UTF-8,而SpringMvc處理的中文亂碼沒(méi)有包含這種類型,所以導(dǎo)致中文亂碼。
所以最后的解決方法是在SpringMvc中文處理加上text/plain這個(gè)類型,如下:
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>
總結(jié)
以上所述是小編給大家介紹的解決Ajax加載JSon數(shù)據(jù)中文亂碼問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
按鈕的Ajax請(qǐng)求時(shí)一次點(diǎn)擊兩次提交的解決方法
像ajax請(qǐng)求發(fā)生兩次提交的原因是在執(zhí)行完ajax請(qǐng)求后,并沒(méi)有阻止submit的行為,下面小編給大家?guī)?lái)兩種按鈕的ajax請(qǐng)求時(shí)一次點(diǎn)擊兩次提交的解決方法,一起看看吧2016-09-09完美解決ajax跨域請(qǐng)求下parsererror的錯(cuò)誤
下面小編就為大家?guī)?lái)一篇完美解決ajax跨域請(qǐng)求下parsererror的錯(cuò)誤。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01有關(guān)ajax的error與后臺(tái)的異常問(wèn)題解決
這篇文章主要介紹了關(guān)于ajax的error與后臺(tái)的異常,需要的朋友可以參考下2014-02-02ASP+Ajax實(shí)現(xiàn)無(wú)刷新評(píng)論簡(jiǎn)單例子
ASP+Ajax實(shí)現(xiàn)無(wú)刷新評(píng)論簡(jiǎn)單例子...2007-07-07初步了解JavaScript,Ajax,jQuery,并比較三者關(guān)系
這篇文章主要介紹了初步了解JavaScript,Ajax,jQuery,并比較三者關(guān)系的相關(guān)資料,需要的朋友可以參考下2015-10-10