【发布时间】:2011-09-28 07:19:30
【问题描述】:
当我尝试使用 XMLHttpRequest 从同一域加载一些 .txt 格式的数据时,我遇到了一个有趣的问题。 我正在尝试加载数据,对其进行解析,然后将其存储在 localStorage 中
var xmlhttp;
// code for IE7+, Firefox, Chrome, Opera, Safari
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var temp;
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
temp = xmlhttp.responseText;
}else{
alert("readyState: " + xmlhttp.readyState + "status: " + xmlhttp.status);
}
}
xmlhttp.open("GET","data/somedata.txt", false);
xmlhttp.send();
此代码仅在我清除历史记录和缓存时才有效;但是,在第二次单击同一链接时,由于某种原因,我会收到“Readystate: 4, status 0”。
这和localStorage有关系吗?
if (!localStorage.somedata || localStorage.somedata.count(':') !== somedata.count(':')) {
localStorage.somedata = temp;
}
window.somedata = JSON.parse(localStorage.somedata);
【问题讨论】:
-
我假设浏览器缓存了文件,所以你只有第一次得到“200 OK”状态。重复请求应导致“304 Not Modified”。我不确定你为什么会得到 0...
-
@ŠimeVidas 也许如果根本没有发出请求,并且页面只是从缓存中提供的?
-
@lonesomeday 是的,我想就是这样......
标签: javascript html xmlhttprequest