JS实现AJAX请求_2
JS实现AJAX请求_2(进阶篇)
问题:当多次调用同一个AJAX请求时,可能会遇到服务器的数据发生改变了,但是在浏览器中获取的数据没有同步的问题。问题的原因在于浏览器的缓存。这种情况一般只发生在GET请求中。
避免GET缓存:
使用无意义的参数避免缓存:
//这里只针对非IE的浏览器了,IE也是如此,只有对象的创建不同罢了 var xmlHttp=new XMLHttpRequest(); var timer=new Date().getTime();//获取当前的时间,每次请求时的时间是不同的 xmlHttp.open("GET","ajax.do?temp="+timer,true); xmlHttp.send();
在服务端添加响应头:
//在servlet中添加响应头 response.setContentType("text/html;charset=UTF-8"); response.addHeader("pragma","no-cache"); response.addHeader("cache-control","no-cache"); response.addHeader("expires","0"); //这三个响应头告诉浏览器不使用缓存
问题:当我们使用GET请求传参中有中文时,会出现乱码的情况,POST请求转码比较简单。
AJAX对中文的支持:
GET请求:
//js传中文 var xmlHttp=new XMLHttpRequest(); var v=encodeURIComponent("这是汉字");//将中文包裹起来 xmlHttp.open("GET","ajax.do?param="+v); xmlHttp.send();
//servlet中 String v=request.getParameter("param");//接收请求地址中的param的值 v=new String(v.getBytes("ISO-8859-1"),"UTF-8");//将原数据重新编码为UTF-8格式
POST请求:
//js var xmlHttp=new XMLHttpRequest(); xmlHttp.open("POST","ajax.do"); xmlHttp.send("v=这是汉字");//不用包裹起来
//servlet中 request.setCharacterEncoding("UTF-8");//这里设置请求的编码格式即可 String v=request.getParameter("v");//v=这是汉字
总结:
- 避免GET缓存
- 对中文的支持
- 字符转码
结语:
对所有的请求习惯性在servlet中都设置编码格式
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
GET请求中有中文时,将中文包裹起来,英文也可以包裹,没有什么影响。
相关推荐
坚持着执着 2020-07-16
坚持着执着 2020-06-14
lyqdanang 2020-08-16
坚持着执着 2020-06-16
TONIYH 2020-06-05
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
curiousL 2020-08-03
TONIYH 2020-07-22
时光如瑾雨微凉 2020-07-19
83510998 2020-07-18
jiaguoquan00 2020-07-07