Javascript 如何在php中检查两个类似的数据库调用是否返回相同的数据

Javascript 如何在php中检查两个类似的数据库调用是否返回相同的数据,javascript,php,ajax,Javascript,Php,Ajax,我试图检查两个相同的从PHP到DB的背对背调用是否返回相同的数据 我在javascript中有一个setTimeoutFunction,它在服务器上调用一个函数,inturn调用数据库,大致结构如下 function getOnlineUsers(){ ajaxCall({type:'get',method:'getOnlineUsersDB'},getOnlineUsersCallBack); setTimeOut(1000); } function getO

我试图检查两个相同的从PHP到DB的背对背调用是否返回相同的数据

我在javascript中有一个setTimeoutFunction,它在服务器上调用一个函数,inturn调用数据库,大致结构如下

  function getOnlineUsers(){
      ajaxCall({type:'get',method:'getOnlineUsersDB'},getOnlineUsersCallBack);
    setTimeOut(1000);
    }

function getOnlineUsersCallBack(jsonObj){
//do something online only if 'jsonObj' is different from last jsonObj
}
我的PHP服务器端函数

$cacheData; // variable to cache data from previous calls to the DB

function getOnlineUserDB(){

$sql="select onlineusers from someTable ";

$data=getFromDbAndCastArray($sql);

if($data!=$cacheData){
                $cacheData=$data;
                return json_encode($data); //something new is returned since the last time
            }
            else {
                return false;
            }

}
基本上,如果在后续调用之间接收到的数据相同,我不想运行对Ajax调用的回调。 我试着用php将数据缓存在全局变量中,但失败了

我也可以尝试在前端检查,但不确定哪种方法是最好的


谢谢。

您可以尝试以下方法

  • 在Javascript中声明全局变量
  • 将值存储在从服务器接收的全局变量中
  • 在Ajax调用中将全局变量传递给服务器,对于第一个调用,全局变量的值将为空
  • 在PHP端,若参数received value不是空的,则从received value创建一个数组
  • 将查询结果存储在数组中
  • 比较两个数组并相应地返回结果