304未修改,Ajax无法正常工作?

时间:2014-12-25 02:18:27

标签: ajax

<script>
var xmlHttp =new XMLHttpRequest();
var url= "summary.txt";
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var myArr = JSON.parse(xmlHttp.responseText);
myFunction(myArr);
}
xmlHttp.open("GET", url , true);
xmlHttp.send();
}   function myFunction(arr)
var output="";
var i;
for(i=0;i<arr.length;i++){
    output+='<p>'+arr[i].title+arr[i].image+arr[i].price+'</p>';    
}
document.getElementById("proTab").innerHTML = output;
}
</script>

我将所有HTML和JSON都存储在htdocs文件夹中,xampp启动并确保Apache和mysql在控制面板上运行。然后我使用&#34; localhost /&#34;键入了指向html的链接。获取HTML,但页面是空白的。对不起,所有的细节。

控制台说304未修改。我该怎么办?

2 个答案:

答案 0 :(得分:0)

我的猜测是你正在使用IE,它会积极地缓存AJAX GET请求。我建议更改为使用POST进行AJAX请求。

如果必须使用GET请求,则另一种方法。您可以为每个GET请求添加一个唯一的查询字符串值,如下所示:

var url = 'summary.txt' + '?' + Math.random()*Math.random();

答案 1 :(得分:0)

我将它用于jQuery AJAX:

$.ajaxSetup({
    // Disable caching of AJAX responses
    cache: false
});

我认为你可以在没有jQuery的情况下找到如何将它用于JS。因此,我们的想法是在发送请求之前清除缓存,因为服务器响应没有任何更改,并发送304 NOT MODIFIED而不是200 OK。也就是说,您的summary.txt尚未更改(未修改),因此服务器会告诉您。