Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mendapatkan nilai dicetak pada skrin sambil menunggu hasil ajax?

Saya menggunakan jQuery ajax untuk menghantar permintaan ajax ke fail php.

$.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);
            }
        })

Semasa permintaan ini dijalankan, saya sedang mencetak ke skrin pada selang waktu dalam fail php.

echo 'abc';
sleep(5);
echo 'def';
sleep(5);
echo 'ghi';

Tetapi selepas semua proses selesai, proses ajax dimatikan. Saya ingin mendapatkan nilai yang dicetak pada skrin semasa proses sedang berjalan.

Sebagai contoh, saya ingin mendapatkan nilai 'abc' apabila permintaan dibuat, 'def' selepas 5 saat dan 'ghi' selepas 10 saat. Bagaimana saya boleh melakukan ini? Saya mahu mencapai ini tanpa menggunakan sesi, kuki atau pangkalan data.

P粉252116587P粉252116587423 hari yang lalu613

membalas semua(1)saya akan balas

  • P粉638343995

    P粉6383439952023-09-16 21:53:23

    Tidak, anda tidak boleh melakukan ini

    Anda hanya boleh melakukan ini di bahagian hadapan

    Anda boleh mendapatkan respons secara berkala dan menambahnya pada paparan html menggunakan append() supaya ia terus berkembang

    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>

    Saya sering menggunakan ini apabila menunjukkan kemajuan dalam JavaScript, seperti semasa php artisan migrate di Laravel

    balas
    0
  • Batalbalas