jQuery AJAX with an interval

jQuery AJAX with an interval

本文关键字:interval an with AJAX jQuery      更新时间:2023-09-26

我有一个关于间隔内的 AJAX 调用的问题。以及为什么它不起作用,或者以它的工作方式工作。

我有这个代码(这个不起作用)

setInterval($.ajax({
  //Place code here
}), 2000);

但后来我这样做

setInterval(function() {
  $.ajax({
    //Do ajax stuff here
  });
}, 2000);

现在它可以工作了,但对我来说,这看起来我只做了一个额外的匿名函数。

setInterval需要字符串格式的函数或可执行代码。

第一次调用在字符串中时将起作用。

setInterval('$.ajax({ //Place code here })', 2000);

不鼓励使用此语法,原因与使用 eval 相同。

setInterval也可以采用可选的参数列表。您可以利用这一事实并使用如下所示的内容:

setInterval($.ajax/*a reference to the ajax function*/,
 2000, {url: 'someurl', success: onSuccess, error: onError}/*args passed to $.ajax*/
);

请注意,这不适用于使用 this 来确定上下文的对象方法,因为 this 的值将绑定到 window 。也就是说,以下内容不起作用:

setTimeout($('h1').css, 1000, {'color': 'red'});

setInterval需要一个函数作为第一个参数(引用),这就是为什么setInterval($.ajax({ //Place code here }), 2000);不起作用,因为$.ajax函数返回一个jQuery XMLHttpRequest object(参考)

setInterval(function() { $.ajax({ //Do ajax stuff here }); }, 2000);确实创建了一个匿名函数,但除非您引用代码以使其成为string,否则这是必需的。