IT兄弟连 JavaWeb教程 AJAX常见问题

1  中文乱码问题浏览器

●  POST提交乱码缓存

乱码缘由:全部浏览器对Ajax请求参数都使用UTF-8进行编码,而服务器默认使用ISO-8859-1去解码,因此产生乱码。服务器

解决方法:在服务器接收请求参数前设置解析编码。dom

request.setCharacterEncoding("UTF-8");编码

●  GET提交乱码code

乱码缘由:IE浏览器发送请求时,会默认使用GBK字符集对请求参数进行编码,而其余浏览器会使用UTF-8.服务器默认状况下使用的时ISO-8859-1进行解码,因此产生乱码。对象

解决方法:在浏览器发送请求前,先将URL利用encodeURI()编码。encodeURI会使用UTF-8对请求地址中的中文进行编码。get

var uri = 'xxx?name=张三';乱码

xhr.open('get',encodedURI(uri),true);随机数

在服务器端进行编码转换:

String name = request.getParameter("name");

name = new String(name.getBytes("ISO-8859-1"),"UTF-8");

 

2  缓存问题

不一样浏览器对于请求相同地址的处理方案以下:

Chrome  从新发送请求

FireFox 从新发送请求

IE       再也不发送请求

IE浏览器提供的Ajax对象,在发送GET请求时,会先查看是否访问过该地址,若是该地址访问过,浏览器就不会再发送请求,而是取出先前浏览器缓存的数据内容。

浏览器缓存的解决方案:

s在请求地址后面添加一个系统时间或者一个随机数字,例如:

xhr.open('get','load.do?r=' + new Date().getTime(),true);

xhr.open('get','load.do?r=' + Math.random());

相关文章
相关标签/搜索