码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-12-04 18:27:22      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

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

 

------------------------------------

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

标签:

原文地址:http://www.cnblogs.com/cst11021/p/5019650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!