3

我有一个 javascript 函数(由按钮调用),它对 php 文件执行 ajax 请求。php 文件连接到数据库并从我的数据库中回显一个随机行。负责此的php代码:

$value = $db->get_row("SELECT * FROM mytable ORDER BY RAND() LIMIT 1");
echo $value;

一切正常!在所有浏览器(IE 除外)上,我每次都可以按下按钮并获取随机行。但是在 IE 上它给了我相同的行,直到我刷新页面。我尝试了所有版本的 IE,在我刷新页面之前,该行不会改变。

知道它可能是什么吗?

提前致谢!

这里有更多代码:

function getdata(){
    var data = $.ajax({
            url: "getmydata.php",
            async: false
        }).responseText;

    passdata(data); 
}

编辑:我知道 ORDER BY RAND 不好,但我只有 10 行!

4

1 回答 1

4

是的,IE 因积极缓存请求和忽略 HTTP 标头而不缓存内容而臭名昭著。在我们的应用程序中,当我们有一个必须从服务器刷新的 AJAX 请求时,我们在 url 中使用一个缓存破坏随机数:

url: "getmydata.php?rand="+Math.random()

?用于添加查询字符串参数,如果您不处理它们,它将不会对请求产生影响。由于 url 每次都是唯一的,因此永远无法缓存。


编辑:正如@GNi33 所指出的,jQuery.ajaxcache中已经内置了一个功能,可以使用名为set的参数强制缓存破坏false

var data = $.ajax({
    url: "getmydata.php",
    cache: false,    /* ADD THIS to prevent IE caching */
    async: false
}).responseText;

这些解决方案中的任何一个都足够了。

于 2013-03-22T02:28:58.617 回答