我正在使用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或資料庫的情況下實現。
P粉6383439952023-09-16 21:53:23
不行,你不能這樣做
你只能在前端這樣做
你可以定期取得回應,然後使用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)
<div id="log"></div>
我經常在JavaScript中顯示進度時使用它,例如在Laravel上的php artisan migrate過程中