检测jQuery.load()上是否更改了数据

时间:2011-02-03 19:01:56

标签: jquery ajax timing

我很确定这存在,但我不知道该搜索什么:

我通过JQuery $('#somediv').load()和另一个$.ajax()刷新内容。我想了解新内容与旧内容相同并降低刷新率的情况。

我可以想象如何为ajax案例做这件事 - 但似乎我必须在内存中存储大量数据。

但是load呢?

2 个答案:

答案 0 :(得分:2)

jQuery的load$.ajax()函数只能获取一次。如果你不断刷新,你必须使用计时器或循环。只需清除计时器并设置一个新的间隔。

var refreshRateMs = 5000;
timerId = setInterval("refreshPage()", refreshRateMs);

function refreshPage() {
  $("#somediv").load(); // Or other refresh code
}

// Later, you need to reduce the refresh rate (increase the interval):
clearInterval(timerId)
refreshRateMs += 1000; // Make delay 1s longer
timerId = setInterval("refreshPage()", refreshRateMs);

如果您需要先使用.load()检查新内容与旧内容的内容是否相同,请先添加{em>不要使用.load().load()有一个隐式回调函数,可以将它加载到dom中。相反,请使用$.get

$.get('page_to_load.html', function(data) {
   var newContent = $('.result').html(data);
   if newContent == $('.oldContent') { // Whatever check is necessary
       $("#somediv").append(newContent);
   }
});

答案 1 :(得分:2)

从性能的角度来看,我是否正确地假设Jasie提供的答案要求浏览器加载整个远程文件以便它可以根据本地存储的变量检查内容?

如果您正在寻找效率,更有效的方法可能是使用ajax,因为它只能检查标头并使用上次修改日期。 (我在这里阅读http://www.ambitionlab.com/how-to-check-if-a-file-exists-using-jquery-2010-01-06

因此,可以重复进行简单的标题检查,然后仅在修改日期更改时退出到文件重新加载。

我打算使用这种方法,如果我让它们正常工作,我会在这里发布结果。