如何在使用ajax时清除缓存数据?

sea*_*ean 1 ajax

我正在使用Ajax从服务器检索数据,如下所示基于一些ID来执行自动建议功能.但是,当我提交表单并更新数据库时,自动建议字段假设不应再包含此ID的任何内容,但它仍将从其缓存中检索数据.有谁知道如何清除缓存并使Ajax发送请求每次按下按钮从服务器获取最新数据?请帮助我真的坚持这整周,无法找到解决方案.

例如:当ID字段为00001时,自动建议字段为1,2,3.在我提交表单并更新数据库后,当我再次搜索00001时,它不应包含任何内容,但它仍然将数据缓存为1,2,3在建议字段中...

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
}
else
 {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
var data=xmlhttp.responseText;
alert(data);

}
}
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)

Nea*_*alv 5

我曾经遇到过这个问题.这可能是您可以在服务器设置中修复的内容.服务器所做的是获取服务器请求,构建答案,并且当再次完成相同的请求时,它会发送它之前构建的相同响应.

为了轻松避免这个问题,我添加了一个额外的请求参数(一个UID).所以:

xmlhttp.open("GET","gethint.php?q="+str+**"?something"=RANDOMGUID**,true);
Run Code Online (Sandbox Code Playgroud)

这样你总是有一个独特的要求.


Kri*_*ris 5

适用于 IE8

xmlHttp.open("GET", URL, true);
xmlHttp.setRequestHeader("Cache-Control", "no-cache");
xmlHttp.setRequestHeader("Pragma", "no-cache");
xmlHttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
Run Code Online (Sandbox Code Playgroud)