重复jQuery ajax调用

如何每10秒重复一次jQuery ajax调用?

$(document).ready(function() { $.ajax({ type: "GET", url: "newstitle.php", data: "user=success", success: function(msg) { $(msg).appendTo("#edix"); } }); 

我试图用函数包装$ .ajax并用setInterval调用函数

 $(document).ready(function() { function ajaxd() { $.ajax({ type: "GET", url: "newstitle.php", data: "user=success", success: function(msg) { $(msg).appendTo("#edix"); } }); } setInterval("ajaxd()",10000); }); 

但它说“ajaxd没有定义”

您的方法不应该放在ready方法中,或者只能在那里使用,而不是在外面。

 $(document).ready(function() { setInterval("ajaxd()",10000); }); function ajaxd() { $.ajax({ type: "GET", url: "newstitles.php", data: "user=success", success: function(msg){ $(msg).appendTo("#edix"); } }); } 
 $(document).ready(function() { setInterval(function() { $.ajax({ type: "GET", url: "newstitle.php", data: "user=success", success: function(msg){ $(msg).appendTo("#edix"); } }); }, 10000); }); 

更好的方法是使用setTimeout ,因此您只在前一个请求完成时发出请求。

应该怎么做

想象一下,由于某种原因(服务器故障,网络错误)的请求需要比定义的时间更长的时间。 你会有很多同时发出的请求,这没什么好处的。 如果你决定在未来将时间差从10个时间缩短到1秒怎么办?

 $(function() { var storiesInterval = 10 * 1000; var fetchNews = function() { console.log('Sending AJAX request...'); $.ajax({ type: "GET", url: "newstitles.php", data: { user: 'success', some: ['other', 'data'] } }).done(function(msg) { $(msg).appendTo("#edix"); console.log('success'); }).fail(function() { console.log('error'); }).always(function() { // Schedule the next request after this one completes, // even after error console.log('Waiting ' + (storiesInterval / 1000) + ' seconds'); setTimeout(fetchNews, storiesInterval); }); } // Fetch news immediately, then every 10 seconds AFTER previous request finishes fetchNews(); });