我每60秒通过ajax get检索一个随机用户。另外,我想触发一个计时器,该计时器指示用户何时显示下一个“随机用户”。
我尝试创建两个单独的函数,一个用于ajax get,另一个用于计时器。这些函数在setinterval函数中调用。但是,这不能正常工作。
<script type="text/javascript">
window.onload = function random_user() {
/*ajax request*/
$.ajax({
type: "get",
url: "random_user.php",
async: "false",
success: function (data) {
$('#random_user').html(data);
console.log(data)
}
});
/*Countdown script*/
function countdown() {
var counter = 60;
var interval = setInterval(function () {
counter--;
if (counter <= 0) {
clearInterval(interval);
return;
}else{
$('#time').text(counter);
console.log("Timer --> " + counter);
}
}, 1000);
}
/*Final function call*/
setInterval(function () {
random_user();
countdown();
}, 60000); //60000 milliseconds = 60 seconds
}
</script>
<ul class="accordion">
<li>
<a>1 user - <span id="time">60</span> sec</a>
<div class="dropdown">
<div id="random_user"></div>
</div>
</li>
</ul>
由于我是php和javascript的新手,因此非常感谢您的帮助。 最好的问候
答案 0 :(得分:1)
您不需要两个单独的间隔。如果counter == 0,则您的倒数计时器可以调用random_user()
。
最后,在成功的ajax请求之后,简单地开始倒计时。
window.onload = function random_user() {
/*ajax request*/
$.ajax({
type: "get",
url: "random_user.php",
async: "false",
success: function(data) {
$('#random_user').html(data);
console.log(data);
countdown();
}
});
/*Countdown script*/
function countdown() {
var counter = 60;
var interval = setInterval(function() {
counter--;
if (counter == 0) {
clearInterval(interval);
random_user();
} else {
$('#time').text(counter);
console.log("Timer --> " + counter);
}
}, 1000);
}
}
答案 1 :(得分:0)
您也可以尝试类似的方法
function randomUser() {
$.ajax({
type: "get",
url: "random_user.php",
async: "false",
success: function (data) {
$('#random_user').html(data);
scheduleNext()
startCounter();
}
});
}
function startCounter() {
const counter = 1;
setInterval(() => {
$('#time').text(counter);
counter++;
}, 1000)
}
function scheduleNext() {
setTimeout(() => {
$('#time').text('getting next user...');
random_user();
}, 60000)
}
randomUser();