微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP-ORDER BY RAND()在IE上始终给出相同的行

我有一个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); 
}

编辑:我知道按兰德排序很糟糕,但是我只有10行!

解决方法:

是的,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;

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐