<script type="text/javascript"> $(document).ready(function(){ $(".a-btn2").click(function(){ var url = "person.dragon.cases(1)"; $.ajax({ url : url, type : 'POST', data : {'text1':'開始加載信息代碼'}, //contextType : "application/json", //dataType : 'json', async : false, success : function(result){ alert(result[0].caseId+" , "+result[0].name+" ,"+result[0].suspectList[0].xm); }, error : function(){ alert('非常抱歉,獲取更多管控情況出錯,請聯系管理員!'); } }); }); }) </script>
@ResponseBody @RequestMapping("/person.dragon.cases({id})") public List<Case> getCasesMessage(@PathVariable String id,HttpServletRequest request) throws IOException{ List<Case> cases = personDossierService.getCases(id, 1000); Case c = new Case(); c.setCaseId(id); c.setName(request.getParameter("text1")); Suspect s = new Suspect(); s.setAjbh("123"); s.setXm("張三"); List<Suspect> suspectList = new ArrayList<Suspect>(); suspectList.add(s); c.setSuspectList(suspectList); cases.clear(); cases.add(c); return cases; }
問題:在JQuery的Ajax POST請求中,進行請求,其中的中文在后台,顯示為亂碼,在FF/Chrome中,可以正常傳遞中文,但是在IE下,則存在問題
解決辦法一:
前段:data : {'text1':encodeURI('開始加載信息代碼', "UTF-8")} 使用encodeURI進行編碼
后端Java代碼: c.setName(URLDecoder.decode(request.getParameter("text1"), "UTF-8")); 后端代碼針對前段傳遞過來的字符串,進行解碼。
解決辦法二:
設置ajax參數:contentType: "application/x-www-form-urlencoded; charset=utf-8"
原因:
在IE下post提交中文亂碼,firefox下不會,對比兩邊提交的請求頭信息發現問題出現在Content-Type,IE下是Content-Type application/x-www-form-urlencoded;而firefox下是Content-Type application/x-www-form-urlencoded; charset=utf-8 ,IE沒有設置charset=utf-8,
簡單解決這個問題:
設置全局的Content-Type為:contentType: "application/x-www-form-urlencoded; charset=utf-8"