jQuery AJAX的间隔

Rob*_*ens 11 javascript ajax jquery setinterval

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

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

setInterval($.ajax({
  //Place code here
}), 2000);
Run Code Online (Sandbox Code Playgroud)

但后来我这样做了

setInterval(function() {
  $.ajax({
    //Do ajax stuff here
  });
}, 2000);
Run Code Online (Sandbox Code Playgroud)

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

c.P*_*.u1 11

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

放入字符串时,第一个调用将起作用.

setInterval('$.ajax({ //Place code here })', 2000);
Run Code Online (Sandbox Code Playgroud)

不鼓励使用此语法的原因与使用相同eval.

setInterval也可以选择一个参数列表.你可以利用这个事实并使用这样的东西:

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

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

setTimeout($('h1').css, 1000, {'color': 'red'});
Run Code Online (Sandbox Code Playgroud)