Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带间隔的jQuery AJAX_Javascript_Jquery_Ajax_Setinterval - Fatal编程技术网

Javascript 带间隔的jQuery AJAX

Javascript 带间隔的jQuery AJAX,javascript,jquery,ajax,setinterval,Javascript,Jquery,Ajax,Setinterval,我有一个关于间隔内AJAX调用的问题。为什么它不起作用,或者它的工作方式 我有这个代码(这个不工作) 但我还是这样做了 setInterval(function() { $.ajax({ //Do ajax stuff here }); }, 2000); 现在它可以工作了,但对我来说,这似乎只是一个额外的匿名函数。code>setInterval需要一个字符串格式的函数或可执行代码 第一个调用将在放入字符串中时起作用 setInterval('$.ajax({ //Place

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

我有这个代码(这个不工作)

但我还是这样做了

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

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

code>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({//placecode here}),2000)
不起作用,因为
$.ajax
函数返回一个
jQuery-XMLHttpRequest对象


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

您需要提供在每个间隔执行的函数<代码>$。ajax不返回函数,因此它不工作。好问题@Rob!希望我的编辑能帮助您理解标记的正确用法:)有一个专门的沙盒可以使用post格式-也许这也会帮助您习惯标记。@Lix感谢编辑:)您能更改代码示例,使其不使用
eval
?我同意保留免责声明。@FritsvanCampen,但是兄弟,这是我文章中唯一的示例代码。谢谢回答:)我想我更喜欢这种方式,而不是使用anomynous函数:)这对我来说是新的。太好了,谢谢你的回答:)
setTimeout($('h1').css, 1000, {'color': 'red'});