ajax提交后台乱码,IE会乱码其他浏览器不会

<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;
}

 

问题:在JQueryAjax 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"

posted @ 2015-12-04 16:22  一天一夜  阅读(2697)  评论(0编辑  收藏  举报