Javascript 带间隔的jQuery AJAX
我有一个关于间隔内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
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'});