我有一个while循环,它在循环中使用usleep()函数做一些事情,如下所示:
$x = 0;
while ($x < 30)
{
$x += 1;
usleep(200000);
}
echo 'done';
此脚本由 ajax 在后台通过以下方式调用:
(function test() {
$.ajax({
type: 'POST',
url: '/jq_test/txt.php',
data: {text: $('#input').val()},
async: true,
success: function (data) {
$('#table tbody').append(data);
setTimeout(test);
}
});
})();
我得到的问题是 safari 在循环进行时保持页面加载栏保持活动状态。仅当 x 等于 30 时,页面才会停止加载并回显"完成"。之后,按照我的预期在后台调用该脚本,并每 30*0.2 秒回显"完成"。为什么会这样?
我发现了问题所在。Ajax 请求一个包含while
循环的.php文件。由于此脚本与页面本身同时被调用,因此 safari 5 将其理解为主页的一部分,直到循环完成才完成页面加载。