学习Ajax中遇到的一些问题(总结问题是为了尽量不再犯同样的错误)
1.不够仔细,由于JavaScript太灵活了,而且在jsp中直接写js有很多错误都是检测不到的,所以在写的时候一定要仔细,有时候出现的一些莫名其妙的错误常常是写方法或者变量的时候出现了拼写错误,或者是少传了参数。
2.获取responseText时遇到的的乱码问题。
问题现状:使用post方法时,没有什么问题(因为是照着老师的敲得);如果改为get,则就全是乱码了....(有待折腾)
3.如果想要获得更新的数据,则必须先做好一个准备,也就是将response设这为无缓存,
引用
response.setHeader("Cache-Control", "no-cache");
这样的话,response中就不会预留一块区域来存储收到的数据。如果没有先设置好response的话,当页面获取更新的数据时,不但每次取到的都是第一次更新的数据,而且甚至连负责更新的服务器都不会被访问到。我猜测原因或许是因为页面在发送请求之前会先访问response中的缓存,如果存在数据的话就直接取数据,并且不会发送请求了。
4.函数在顺序上有时候也会出错。例如这里:
引用
var timeflag;
function stopMsg()
{
clearTimeout(timeflag);
}
function sendRequest(url,ElementID){
getRequest();
request.onreadystatechange = function(){rcevMsg(ElementID);};
request.open("get",url,true);
request.send(null);
timeflag = setTimeout("sendRequest ('"+url+"','"+ElementID+"')",2000);
}
可以看到timeflag是在sendRequest()中被赋值的,即便是在具体操作中,sendRequest()先被调用(这里指的是页面内的调用),stopMsg()后被调用,还是没有办法执行到stopMsg()中的内容。
5.关于页面切换时遇到的问题就比较纠结了...之所以纠结,是因为问题不是出自于我本身。最初当我发送请求百度和谷歌的页面时,就是获得不到,纠结了两天晚上,以为是哪里写错了,后来直接copy老师的代码了,结果还是不行...后来换成自己写的页面,就好了...囧...可能是IE9的问题吧,具体的我也不是太清楚,所以说,不要总是找自己的错误~因为有时候出现问题了,错误了并不是你自己.
6.不要用IE9来做练习,绝对不要~