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;

}

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

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

时间: 2024-10-25 22:04:43

ajax提交后台乱码,IE会乱码其他浏览器不会的相关文章

Ajax提交后台中文乱码问题

今天项目组同事反映,之前有一个正常的请求,今天突然后台获取参数的值出现了中文乱码,怀疑是之前更新jar包所致,笔者仔细想了想更新的内容,仿佛没有涉及到编码的变更啊,然后开始排查,首先后台加了强制以utf-8解析请求的过滤器,web服务器的编码也改成了utf-8,前台页面也是utf-8编码,但是就是有个页面的请求出现了乱码:经过对比发现,所有采用了通用ajax工具提交的请求,都会有这个问题,后来发现,原来上次更新为了解决跨域的问题,在通用的底层代码中加入了content-type参数,默认值设为了

EXT--表单AJax提交后台,返回前端数据格式的转换

前言: 前端发送请求至服务端(Java),得到的数据是Java语言对象所表现的形式,经常需要转换为JSON格式的字符串写出至前端:当前端获取后也往往需要将字符串转换为js的对象.本文描述了在EXT作为前端框架,表单异步提交的情景下这些数据格式处理.当然,此类的格式转换方法有多种,本文仅描述其中一种而已. 说明:EXT版本:3.4 示例: 服务端相关代码 //创建SubTreeVo集合 List<SubTreeVo> treeVos = new ArrayList<SubTreeVo>

点滴积累【C#】---验证码,ajax提交

效果: 思路: 借用ashx文件创建四位验证,首先生成四位随机数字.然后创建画布,再将创建好的验证码存入session,然后前台进行button按钮将文本框中的值进行ajax请求到后台,和session中的验证码进行对比,成功返回true,失败返回false. 代码: [前台] 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="verifycodeDemo.aspx.cs"

js序列化数组用于ajax提交数据

但我们要用ajajx提交类似于: array('id' =>12,data => array('a'=>1,'b'=>2)); 这样的二维数组的数据时,直接ajax提交后台是接收不到的,需要特殊处理下: //这里只能处理二维数组数据,多维的需在做循环或递归function serialize_data(obj){ var str = ''; for(var i in obj){ if(typeof(obj[i]) === 'object'){ for(var s in obj[i]

ajax提交java后台接收参数出现乱码

1.现象: 前台ajax提交查询数据 $.ajax({ url: 'bdmap/xx.action', data:para, dataType:'json', contentType:"application/x-www-form-urlencoded", success: function(data){ if(data.success){ callback(data.data); } }}) Request URL:http://localhost:8083/bdmap/xx.act

Jquery Mobile Ajax 提交 中文乱码问题

几百个字段都是中文名,Ajax提交时,参数名也是中文,传值接收一直乱码, 于是乎: 前端:encodeURIComponent(encodeURIComponent(参数)) 后台:URLDecoder.decode(s,"utf-8") 终于解决了乱码问题...

解决表单GET提交后台数据乱码问题

?在页面上提交数据到服务器有两种方式"GET"和"POST",当使用"GET"时,传输的数据是直接拼接在URL后面的.当数据中含有对HTML来说不安全的字符例如中文时,就会被编码,一般采用的是UTF-8编码.这时URL已经被转义成相对安全的字符串.此时再经过ios-8859-1的编码方式转换成二进制的形式跟随请求头一起发送到服务器端. ?到达服务器端时,服务器也对数据进行两次解码,服务器先把数据经过ios-8859-1解码,然后根据服务器默认的编

JQuery AJAX提交中文乱码的解决方案

?JQuery是一个非常优秀的框架,在特定场合下使用JQuery提交数据,相当的方便快捷. 但是,在处理一个GB2312编码的网站AJAX提交时,中文数据却成了乱码. 现象如下: 1)在Firefox下,处理页面的编码为gb2312,提交数据没有问题,中文能够正确解析: 2)在IE8下,处理页面的编码为gb2312,提交中文数据出现乱码. 无论是$.post还是$.ajax,抑或$.ajaxSubmit(来自于Form插件),在之前的UTF-8编码的网站都没有出现过任何问题, 看来是由于提交数据

Ajax提交乱码

1. 页面码 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 1.1 如下图,传入到后台,显示正常,不为乱码 $.ajax({ url:"/flowctrl/saveMessageAction.do?message="+"姓名", type: "get", //data:{message:aa}, dat