如何在等待ajax结果时获取屏幕上打印的值?
P粉252116587
P粉252116587 2023-09-15 23:36:30
0
1
629

我正在使用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粉252116587
P粉252116587

全部回复(1)
P粉638343995

不行,你不能这样做

你只能在前端这样做

你可以定期获取响应,然后使用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过程中

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板