Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann ich den Wert auf dem Bildschirm ausdrucken lassen, während ich auf das Ajax-Ergebnis warte?

Ich verwende jQuery Ajax, um eine Ajax-Anfrage an eine PHP-Datei zu senden.

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

Während diese Anfrage ausgeführt wird, drucke ich in regelmäßigen Abständen eine PHP-Datei auf dem Bildschirm aus.

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

Aber nachdem alle Prozesse abgeschlossen sind, wird der Ajax-Prozess beendet. Ich möchte, dass der Wert während des Vorgangs auf dem Bildschirm angezeigt wird.

Zum Beispiel möchte ich den Wert „abc“ erhalten, wenn die Anfrage gestellt wird, „def“ nach 5 Sekunden und „ghi“ nach 10 Sekunden. Wie kann ich das machen? Ich möchte dies erreichen, ohne Sitzungen, Cookies oder Datenbanken zu verwenden.

P粉252116587P粉252116587373 Tage vor569

Antworte allen(1)Ich werde antworten

  • P粉638343995

    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过程中

    Antwort
    0
  • StornierenAntwort