我正在使用jQuery ajax向php檔案發(fā)送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); } })
在這個請求進(jìn)行中,我在php檔案中以間隔列印到螢?zāi)弧?
echo 'abc'; sleep(5); echo 'def'; sleep(5); echo 'ghi';
但是在所有行程完成後,ajax行程終止。我想在進(jìn)程進(jìn)行中獲取到螢?zāi)簧狭杏〉闹怠?
例如,我想在請求發(fā)出時取得'abc'的值,在5秒後取得'def',在10秒後取得'ghi'。我該如何做到?我想在不使用會話、cookie或資料庫的情況下實現(xiàn)。
不行,你不能這樣做
你只能在前端這樣做
你可以定期取得回應(yīng),然後使用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>
我經(jīng)常在JavaScript中顯示進(jìn)度時使用它,例如在Laravel上的php artisan migrate過程中