这两天开始跟ITV项目,首先进去的是登陆页,登录使用ajax提交数据,使用jQuery.ajax()来发送异步请求,在火狐下可以返回正确的数据格式,但在IE下有返回数据就是无法获得和解析,返回的是undefined;用火狐的firebug查看网络,请求头contentType=’application/x-www-form-urlencoded;charset=utf-8’,响应头contentType=’text/plain;charset=utf-8’,编码没错,但在IE下查看网络,响应头contentType=’text/plain;charset=utf8’,charset值少了一个“-”,跟后端开发人员核对一下,返回编码是utf-8,没少‘-’,这就奇怪了,百思不得其解,后来在网上偶然看到说ajax在IE下请求头默认编码是gb2312;终于明白了问题所在,于是后端开发人员把返回头设为contentType=’text/html;charset=utf-8’;我前端的$.ajax({

contentType:’application/x-www-form-urlencoded;charset=utf-8′

})

明确声明了请求头,然后问题就迎刃而解了,IE(6、7、8、9)下都能返回可以解析的数据。

总结:ajax请求数据要保证请求头编码和服务端返回头编码统一 一致,一致为utf-8;另外,服务端返回头contentType要设为contentType=’text/html’,如果不设的话默认返回是’text/plain’,这也是导致在IE下charset=utf8 少了‘-’的原因。