JQuery異步獲取返回值中文亂碼的解決方法
用jqgrid異步獲取列表值,遇到個(gè)問(wèn)題,服務(wù)器端從數(shù)據(jù)庫(kù)取到的數(shù)據(jù)沒(méi)有出現(xiàn)中文亂碼問(wèn)題(日志打出來(lái)是沒(méi)有亂碼的),但是異步傳到客戶的時(shí)候卻出現(xiàn)了亂碼。 服務(wù)器端已經(jīng)編碼過(guò)了(UTF-8編碼)。開始一直懷疑是客戶端的問(wèn)題,比如客戶端和服務(wù)器端編碼不一致啊,也懷疑是不是jqGrid工具函數(shù)中少配了 contentType: "application/x-www-form-urlencoded; charset=utf-8", 等等問(wèn)題。
結(jié)果都不是,糾結(jié)了幾個(gè)小時(shí),后來(lái)經(jīng)過(guò)大牛的提醒發(fā)現(xiàn),原來(lái)代碼還是出在服務(wù)器端,疏忽了。
@RequestMapping(value = "/searchUserList.form") @ResponseBody public void searchUserList(int page, int rows, HttpServletRequest request, HttpServletResponse response) throws IOException{ System.out.println("idcard="+idCard+"\n page="+page+"\n rows="+rows); List<User> list = userService.findByIDCard(idCard); int totalRecord = list.size(); int totalPage = totalRecord%rows == 0 ? totalRecord/rows : (totalRecord/rows+1); int index = (page-1)*rows; int pageSize = rows; String json = "{\"total\": \""+totalPage+"\", \"page\": \""+page+"\", \"records\": \""+totalRecord+"\", \"rows\": ["; for (int i = index; i < pageSize + index && i<totalRecord; i++) { User u = list.get(i); json += "{\"id\":\"" + u.getUserId() + "\",\"userName\":\""+u.getUserName()+"\",\"idCard\":\""+ u.getIdCard() +"\",\"userTel\":\""+u.getUserTel()+"\",\"userSex\":\""+u.getUserSex()+ "\",\"bankCard\":\""+u.getBankCard()+"\",\"cardStatus\":\""+u.getCardSatus()+"\",\"createTime\":\""+ u.getCreateTime()+"\"}"; if (i != pageSize + index - 1 && i != totalRecord - 1) { json += ","; } } json += "]}"; request.setCharacterEncoding("utf-8"); //這里不設(shè)置編碼會(huì)有亂碼 response.setContentType("text/html;charset=utf-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); //輸出中文,這一句一定要放到response.setContentType("text/html;charset=utf-8"), response.setHeader("Cache-Control", "no-cache")后面,否則中文返回到頁(yè)面是亂碼 out.print(json.toString()); out.flush(); out.close(); }
相關(guān)文章
使用jQuery實(shí)現(xiàn)一個(gè)類似GridView的編輯,更新,取消和刪除的功能
在項(xiàng)目中遇到這樣的需求當(dāng)用戶點(diǎn)擊編輯時(shí),在點(diǎn)擊行下動(dòng)態(tài)產(chǎn)生一行,編輯銨鈕變?yōu)閐isabled,新產(chǎn)生的一行有更新和取消的銨鈕,點(diǎn)擊“取消”銨鈕,刪除剛剛動(dòng)態(tài)產(chǎn)生的行,編輯銨鈕狀態(tài)恢復(fù)。下面小編給大家分享實(shí)例代碼,一起看看吧2017-03-03Jquery Ajax學(xué)習(xí)實(shí)例3 向WebService發(fā)出請(qǐng)求,調(diào)用方法返回?cái)?shù)據(jù)
Jquery Ajax學(xué)習(xí)實(shí)例3 向WebService發(fā)出請(qǐng)求,調(diào)用方法返回?cái)?shù)據(jù)2010-03-03jquery last-child 列表最后一項(xiàng)的樣式
發(fā)開中個(gè)人是比較喜歡用Repeater控件,特別是前臺(tái)可老是遇到一個(gè)問(wèn)題就是一個(gè)列表的最后一項(xiàng)總是和上面的樣式不一樣 如上面的都有下邊框,最后一個(gè)就沒(méi)有2010-01-01jQuery中Datatables增加跳轉(zhuǎn)到指定頁(yè)功能
本文給大家分享jquery中datatable增加跳轉(zhuǎn)到指定頁(yè)面功能以及jquery datatable中加入雙擊跳轉(zhuǎn)功能的實(shí)例代碼,需要的朋友參考下2017-02-02asp.net中oracle 存儲(chǔ)過(guò)程(圖文)
存儲(chǔ)過(guò)程是在大型數(shù)據(jù)庫(kù)系統(tǒng)中,一組為了完成特定功能的sql語(yǔ)句集,經(jīng)過(guò)編譯存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它,下面小編給大家介紹asp.net中oracle存儲(chǔ)過(guò)程,需要的朋友可以參考下2015-08-08jQuery下實(shí)現(xiàn)等待指定元素加載完畢(可改成純js版)
下面就是我想到的等待元素出現(xiàn)方法,雖然是基于jQuery的,但是代碼很簡(jiǎn)潔,可以修改成純js版的,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-07-07jquery的ajax從純真網(wǎng)(cz88.net)獲取IP地址對(duì)應(yīng)地區(qū)名
使用jquery的ajax,輕松從純真網(wǎng)(cz88.net)獲取IP地址對(duì)應(yīng)地區(qū)名2009-12-12jquery加載頁(yè)面的方法(頁(yè)面加載完成就執(zhí)行)
jquery加載頁(yè)面的方法(頁(yè)面加載完成就執(zhí)行),建議大家看下windows.onload與$(document).ready之間的區(qū)別。2011-06-06Jquery easyui 實(shí)現(xiàn)動(dòng)態(tài)樹
本文給大家介紹jquery easyui實(shí)現(xiàn)動(dòng)態(tài)樹,本文通過(guò)代碼實(shí)例相結(jié)合的方式給大家展示jquery easyui實(shí)現(xiàn)動(dòng)態(tài)樹的過(guò)程,感興趣的朋友一起學(xué)習(xí)吧2015-11-11