<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"