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