我有一个javascript函数(由按钮调用),它对php文件执行ajax请求。 php文件连接到数据库并从我的数据库中回显一个随机行。 php代码负责:
$value = $db->get_row("SELECT * FROM mytable ORDER BY RAND() LIMIT 1");
echo $value;
一切正常!在所有浏览器(IE除外)上,我可以按下按钮并每次都获得randow行。但是在IE上,它给了我相同的行,直到我刷新页面。 我尝试了IE的所有版本,在刷新页面之前行不会改变。
知道它可能是什么吗?
提前致谢!
以下是更多代码:
function getdata(){
var data = $.ajax({
url: "getmydata.php",
async: false
}).responseText;
passdata(data);
}
编辑:我知道ORDER BY RAND很糟糕,但我只有10行!
答案 0 :(得分:4)
是的,IE因积极缓存请求而忽略HTTP标头而不缓存内容而臭名昭着。在我们的应用程序中,当我们有一个AJAX请求必须从服务器刷新时,我们在URL中使用缓存清除随机数:
url: "getmydata.php?rand="+Math.random()
?
用于添加querystring parameters,如果您不处理请求,则会对请求产生影响。由于url每次都是唯一的,因此永远不会被缓存。
修改:正如@ GNi33所指出的那样,jQuery.ajax中已经内置了一个强制缓存清除的功能,其中名为cache
的参数设置为false
}:
var data = $.ajax({
url: "getmydata.php",
cache: false, /* ADD THIS to prevent IE caching */
async: false
}).responseText;
这些解决方案中的任何一个都足够了。