jQuery AJAX的间隔

时间:2013-10-01 12:31:48

标签: javascript jquery ajax setinterval

我对一个区间内的AJAX调用有疑问。为什么它不起作用,或以它的工作方式工作。

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

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

然后我就这样做了

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

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

2 个答案:

答案 0 :(得分:11)

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'});

答案 1 :(得分:3)

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

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