这是我的第一个问题,希望您能尽快回答。
我想要代码连续重复一个功能......我已经尝试了一些代码,但它没有奏效。
我试过这段代码:
<script type="text/javascript">
$(function()
{
$('#more').load('exp1.php'); // SERIOUSLY!
});
</script>
我想在一段时间后重复这个功能。我已经尝试
setInterval()
过setTimeout()
但是,我还没有收到结果。
这是我的第一个问题,希望您能尽快回答。
我想要代码连续重复一个功能......我已经尝试了一些代码,但它没有奏效。
我试过这段代码:
<script type="text/javascript">
$(function()
{
$('#more').load('exp1.php'); // SERIOUSLY!
});
</script>
我想在一段时间后重复这个功能。我已经尝试
setInterval()
过setTimeout()
但是,我还没有收到结果。
这将重复任务,直到您清除间隔(使用 clearTimeout(repater))
var repeater;
function doWork() {
$('#more').load('exp1.php');
repeater = setTimeout(doWork, 1000);
}
doWork();
根据 OP 的原始条件:
我想要连续重复功能的代码......
你可以这样做
var myFunction = function() {
$('#more').load('bla.php');
};
var timer = setInterval(myFunction, 1000); // call every 1000 milliseconds
或者
var timer = setTimeout(myFunction, 1000); // call every 1000 milliseconds
clearTimeout(timer); //To stop the function from being called forever
作为@Christofer Eliasson 对于 Ajax 请求,您可能希望使用 timeout 而不是 interval,在回调中再次开始超时,以确保如果服务器占用的时间超过 1,您不会堆栈调用第二个回应
好读
对于 Ajax 请求,我将使用超时而不是间隔,并在 ajax 请求的回调中再次启动超时。
如果您使用 1 秒的间隔并且您的服务器需要超过 1 秒的时间来响应,您将开始以间隔堆叠调用,因为无论如何间隔都会每秒调用一次函数。使用超时回调方法,您不会在上一个请求完成之前开始倒计时。
我正在使用IIFE来触发对该函数的第一次调用。然后当加载完成后,我使用超时在一秒钟后再次调用该函数:
(function loadContent(){
$('#more').load('exp1.php', function () {
setTimeout(loadContent, 1000);
});
})();
只是把它扔在那里:
function doRequest() {
$.ajax({
url: 'exp1.php',
timeout: 1000,
success: function(data) {
$('#more').html(data);
doRequest();
}
});
}
一些好的 ol' 时尚递归怎么样?
function getStuff() {
$('#more').load('exp1.php', function() {
getStuff();
});
}
getStuff();
演示:http:
//jsfiddle.net/Zn2rh/1/