我学习了w3school的ajax教程,有个地方卡住了。
XMLHttpRequest 对象的 open() 方法接受3个参数,即method、url、async。
其中url代表:文件在服务器上的位置。
那么,给这个url加上一个,Math.random(),url这个参数不就成了:demo_get.asp?t=0.1234567890123456
这为何能正常运行呢?
(目前我文件位置的认识是flie/xxx.txt这样的。)
w3的链接:http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp
GET 请求
一个简单的 GET 请求:
xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();
亲自试一试
在上面的例子中,您可能得到的是缓存的结果。
为了避免这种情况,请向 URL 添加一个唯一的 ID:
xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();
阿神2017-04-10 15:31:39
例如你的文件URL是:flie/xxx.txt
第一次Ajax请求这个文件,浏览器可能会将这个文件缓存在本地,下次再打开这个文件浏览器就可以直接打开本地文件,无需重新通过网络再次获取。
但是,浏览器有可能会好心办了坏事,因为你修改了服务器的flie/xxx.txt文件,但是浏览器不知道,它还是会打开本地缓存的文件,这就会造成一些BUG。
为了防止出现这种问题,在URL上加一个参数“t=随机数”,浏览数会认为两次打开的是不同的东西,第二次Ajax就不会使用第一次Ajax的缓存。
至于“这为何能正常运行呢”?
在URL上加上参数,同样还是打开这个文件,当然可以正常运行。
flie/xxx.txt?t=0.1234567890123456,这个URL同样还是打开文件flie/xxx.txt。
PHPz2017-04-10 15:31:39
唉,又是一堆毁人不倦的错误答案。
目前网上加随机数来强行刷新缓存的做法是错的!!
HTTP协议中早已有缓存控制方法,详情自己搜HTTP协议之缓存控制部分!