将ajax响应数据存储到数组中并将其与最后的值进行比较

时间:2017-02-07 07:23:51

标签: javascript php arrays ajax

我坚持这些。我想创建一个每4秒运行一次的函数。现在我的函数将从我的数据库中获取所有的queue_id并一次又一次地将它存储在数组中,在存储之后,我会每4秒一次又一次地比较它,如果有变化,那么我会做点什么。

执行示例:如果我的数据库响应带有queue_id' s:1,2,3,4,5那么我将从数组中存储这些数据。存储后,我将再次查询evry 4秒,如果它返回1,2,4,5或1,2,3,5我将做一些事情,但如果它返回像1,2,3,4,5那样的话我不会做点什么。

我不知道如何在javascript中存储或创建数组。请帮帮我:

argv[1]

2 个答案:

答案 0 :(得分:0)

使用push,并在ajax请求之外声明该数组。现在一切正常

function check_getqueue(clinicID, userID) {
  var tmpCountQ = [];
  var lastCon = [];
  $.ajax({
    url: siteurl+"sec_myclinic/checkingUpdates/"+clinicID+"/"+userID,
    type: "POST",
    dataType: "JSON",
    success: function(data) {
      for(var i=0;i<data.length;i++) {
        tmpCountQ.push(data[i]['queue_id']);
      };
      if(typeof lastCon[0] != "undefined")
      {
        for(j=0;j < tmpCountQ.length;j++)
        {
          if(tmpCountQ[j] != lastCon[j])
          {
            lastCon[j] = tmpCountQ[j];
          } 
        }
      }
      else
      {
       lastCon = tmpCountQ;
      }

      console.log(tmpCountQ);
    }
  });
}

答案 1 :(得分:0)

您需要跟踪最后收到的一组ID,并将它们与新的ID进行比较。找到差异后,调用doSomething()并更新下次运行的记录。

为了加快速度,您可以先检查长度。以下评论栏中的更多信息。

var previousQueueIDs = [];

function doSomething() {
  // do something
  // ...
  // set timer for the next run
  setTimeout(check_getqueue, 4000);
}

function check_getqueue(clinicID, userID) {
  $.ajax({
    url: siteurl+"sec_myclinic/checkingUpdates/"+clinicID+"/"+userID,
    type: "POST",
    dataType: "JSON",
    success: function(data) {
      var queueIDs = [];
      if(previousQueueIDs.length != data.length) {
        previousQueueIDs = queueIDs;
        return doSomething();
      }
      // length didn't change, so check further
      // create new array for the current values
      for(var i=0;i<data.length;i++) {
        queueIDs.push(+data[i]['queue_id']);
      };

      // sort them for faster comparison
      queueIDs.sort( function(a,b) {
        return a-b;
      });

      // check one by one and exit to run doSomething
      // as soon as the first difference found
      for(var i=0; i<queueIDs.length; i++) {
        if(queueIDs[i] != previousQueueIDs[i]) {
          previousQueueIDs = queueIDs;
          return doSOmething();
        }
      }
      // no difference this time, just set timer for the next run
      setTimeout(check_getqueue, 4000);
    }
  });
}