Ajax 浏览器中的缓存问题?
Ajax cachhing issue in Browser?
我的JavaScript函数如下:
function getActivityDiscussed(str,id)
{
var xmlhttp;
if (str=="")
{
document.getElementById("list_bottom").innerHTML="";
return;
}
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)
{
document.getElementById("list_bottom"+id).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","<?php echo base_url($client_url.'communications/getActivityDiscussed'); ?>/"+str,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");
xmlhttp.send();
}
此 ajax 调用在 IE-9 中不起作用。
我已经使用以下代码清除了缓存:
xmlhttp.setRequestHeader("Cache-Control", "no-cache");
xmlhttp.setRequestHeader("Pragma", "no-cache");
xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
但我必须为每个 ajax 请求使用这些代码。
有没有办法全局禁用缓存?
提前致谢
您可能需要为每个请求添加一些随机数或字符串来解决此问题。
检查此 link.. 会有帮助。 Prevent browser caching of jQuery AJAX call result
据我所知,JavaScript 中没有这样的机制。你必须定期重复它,否则你可以在函数中使用这些代码并在你想要的地方调用函数。
function clearBrowserCacheForAjax()
{
xmlhttp.setRequestHeader("Cache-Control", "no-cache");
xmlhttp.setRequestHeader("Pragma", "no-cache");
xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
}
在每个函数中都可以调用上面的函数。
function getActivityDiscussed(str,id)
{
var xmlhttp;
if (str=="")
{
document.getElementById("list_bottom").innerHTML="";
return;
}
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)
{
document.getElementById("list_bottom"+id).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","<?php echo base_url($client_url.'communications/getActivityDiscussed'); ?>/"+str,true);
clearBrowserCacheForAjax();
xmlhttp.send();
}
我的JavaScript函数如下:
function getActivityDiscussed(str,id)
{
var xmlhttp;
if (str=="")
{
document.getElementById("list_bottom").innerHTML="";
return;
}
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)
{
document.getElementById("list_bottom"+id).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","<?php echo base_url($client_url.'communications/getActivityDiscussed'); ?>/"+str,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");
xmlhttp.send();
}
此 ajax 调用在 IE-9 中不起作用。
我已经使用以下代码清除了缓存:
xmlhttp.setRequestHeader("Cache-Control", "no-cache");
xmlhttp.setRequestHeader("Pragma", "no-cache");
xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
但我必须为每个 ajax 请求使用这些代码。
有没有办法全局禁用缓存?
提前致谢
您可能需要为每个请求添加一些随机数或字符串来解决此问题。
检查此 link.. 会有帮助。 Prevent browser caching of jQuery AJAX call result
据我所知,JavaScript 中没有这样的机制。你必须定期重复它,否则你可以在函数中使用这些代码并在你想要的地方调用函数。
function clearBrowserCacheForAjax()
{
xmlhttp.setRequestHeader("Cache-Control", "no-cache");
xmlhttp.setRequestHeader("Pragma", "no-cache");
xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
}
在每个函数中都可以调用上面的函数。
function getActivityDiscussed(str,id)
{
var xmlhttp;
if (str=="")
{
document.getElementById("list_bottom").innerHTML="";
return;
}
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)
{
document.getElementById("list_bottom"+id).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","<?php echo base_url($client_url.'communications/getActivityDiscussed'); ?>/"+str,true);
clearBrowserCacheForAjax();
xmlhttp.send();
}