<script>
$(document).ready(function(){
ajaxcall();
});
function ajaxcall(){
$.ajax({
url: 'test.php',
success: function(data) {
data = data.split(':');
$('#hours').html(data[0]);
$('#minutes').html(data[1]);
$('#seconds').html(data[2]);
ajaxcall();
}
});
}
</script>
<span id="hours">0</span>:<span id="minutes">0</span>:<span id="seconds">0</span>
在这段代码中我调用了ajax函数onsuccess,因此它将是无限循环。它会导致任何问题吗?
答案 0 :(得分:2)
这会导致浏览器最终耗尽内存并崩溃,因为每次调用都会保存在调用堆栈中。我错了;回调是异步的,因此控制将离开父函数。如果您正在尝试更新时间,我建议您执行以下操作:
$(document).ready(function(){
setInterval(ajaxcall, 1000); //calls ajaxcall every 1000 microseconds
});
function ajaxcall(){
$.ajax({
url: 'test.php',
success: function(data) {
data = data.split(':');
$('#hours').html(data[0]);
$('#minutes').html(data[1]);
$('#seconds').html(data[2]);
}
});
}
答案 1 :(得分:1)
没有什么不好的事情会发生。它将进行ajax调用,等待它返回,然后永久地再创建一个。这本身并没有错。请注意,您的服务器端操作不是太重,并且您没有传输太多数据而不是浪费太多带宽。
如果您希望能够停止它,您可以创建一个变量来定义是否继续进行调用,并在任何时候关闭它。
var keepCalling = true;
function ajaxCall() {
if (!keepCalling)
return;
//ajax call...
}
将keepCalling
设置为false
将在当前呼叫完成后停止呼叫。