我正在使用jQuery ajax向php文件发送ajax请求。
$.ajax({
url: VIP_AJAX_URL + '/add',
data: 'slug=' + slug,
method: 'POST',
beforeSend: function () {
Swal.fire({
title: '请稍候..',
html: '我们正在检查。 <br/>这个过程可能需要一些时间。',
allowOutsideClick: false,
didOpen: () => {
Swal.showLoading()
}
})
},
success: function (res) {
if (res !== 'success') {
Swal.fire({
icon: 'error',
title: 'Oops...',
html: res,
})
return;
}
console.log(res);
}
})
在这个请求进行中,我在php文件中以间隔打印到屏幕。
echo 'abc'; sleep(5); echo 'def'; sleep(5); echo 'ghi';
但是在所有进程完成后,ajax进程被终止。我想在进程进行中获取到屏幕上打印的值。
例如,我想在请求发出时获取'abc'的值,在5秒后获取'def',在10秒后获取'ghi'。我该如何做到?我想在不使用会话、cookie或数据库的情况下实现。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
不行,你不能这样做
你只能在前端这样做
你可以定期获取响应,然后使用append()将其添加到html视图中,这样它就会不断增长
function getLog() { fetch("https://gist.githubusercontent.com/prabansal/115387/raw/0e5911c791c03f2ffb9708d98cac70dd2c1bf0ba/HelloWorld.txt").then(async e=>{ let t = await e.text() document.getElementById("log").innerHTML += t+"<br/>" }) } setInterval(getLog, 1000)我经常在JavaScript中显示进度时使用它,例如在Laravel上的php artisan migrate过程中