javascript - 尝试让ajax将其最后的数据与最新的数据进行比较,但它不起作用

标签 javascript jquery ajax

我正在尝试制作一个每 5 秒获取一次数据的通知系统,但我不知道为什么它不能正常工作。它无休止地输出通知,但它应该获取数据并将其与它存储的最后数据进行比较,如果数据不同,它应该附加通知,当数据相同时,它应该提醒“相同”。

  var appliedData;
  setInterval(getNotifications, 5000);
    function getNotifications(){
        $.ajax({
          type: 'GET',
          url: 'includes/socialplatform/friendsys/notifications.inc.php',
          dataType: "json",
          async: false,
          success: function(data) {
            if ( appliedData != data ) {
              appliedData = data;
              for(i=0; i < data.length; i++){
                $( ".notification-container" ).append('<div class="notification"><p>' + data[i].user +                    '</p></div>');
              }
            }else{
              alert("sammee");
            }
          }
        });
      }

最佳答案

对象(任何非原始对象:数组是对象)永远不会彼此相等,除非它们引用内存中的相同位置。比较时,您的 appliedData 将始终与您的 data 不同,因此该条件始终会失败。如果可以保证响应字符串在代表同一个对象时相同,则可以简单地比较字符串,如下所示。如果没有,您就必须进行深入比较。

let lastDataStr;
setInterval(getNotifications, 5000);
function getNotifications() {
  $.ajax({
    type: 'GET',
    url: 'includes/socialplatform/friendsys/notifications.inc.php',
    dataType: "text", // change here, then parse into an object in success function
    async: false,
    success: function(newDataStr) {
      if (newDataStr === lastDataStr) {
        alert('same');
        return;
      }
      lastDataStr = newDataStr;
      const newData = JSON.parse(newDataStr);
      newData.forEach(({ user }) => {
        $(".notification-container").append('<div class="notification"><p>' + user + '</p></div>');
      })
    }
  });
}

关于javascript - 尝试让ajax将其最后的数据与最新的数据进行比较,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49845704/

相关文章:

javascript - 从标签获取内容并将其保存在 vue 变量中的最有效方法

javascript - js文件包含后的随机数

javascript - 为 Ajax 使用 jQuery 而不是构建您自己的 JavaScript 是否值得?

ajax - 如何使用Dajaxice发送文件数据?

javascript - 我怎样才能取消之前的请求发送矩形

javascript - 如何从 $.getJSON() 调用访问自定义 JS 对象?

jquery - 使用 KnockoutJS 按日期对事件进行分组

javascript - 将 HTML 表格导出到 Excel 文件

javascript - 在jsp上显示时钟

php - ajax 不再适用于 iPhone