Ajax 请求 PHP 循环号


Ajax request for PHP loop number

我目前正在尝试获取PHP循环状态并更新HTML5进度条。循环由按钮单击触发,并在每次执行后设置为 5000,1 秒 sleep()。当然,我也提出了一个 Ajax 请求,每秒重新显示当前循环号并更新进度条。但是,请求总是等到循环完成,并向我显示一个数字,例如"1234567891011..."

这是我的JQuery代码,非常简单,因为它仅用于测试和学习目的

function getStatus() {
    $.ajax({
        url : 'ajax.php',
        dataType: "html",
        type: "POST",
        data: {request: 'request',},
        success: function( data ) {
            //Call function to update status on the loading bar
            updateBar(data);
        }
    });
    //Update loading bar
    function updateBar(data) {
        $('progress').attr('value', data);
    }
}

function setGo() {
    $.ajax({
        url : 'ajax.php',
        dataType: "html",
        type: "POST",
        //async: false,
        data: {status: 'GO',},
        success: function( data ) {}
    });
}

$('#start').click(function(event) { 
    setGo();
    setInterval(function() {
        getStatus();
    }, 1000);
});

这是我的 php 代码

<?php
//Overwrite php execution limit
set_time_limit(120);
if($_POST['status'] = 'GO') {
    $number = 5000;
    $counter = 0;
    for($i=0; $i != $number; $i++) {
        $counter++;
        sleep(1);
        if(isset($_POST['request'])) {
            echo $counter;
        }
    }
}
?>

我尝试了很多不同的方法,阅读了很多帖子,但不知何故,没有任何效果。希望有人有想法。

仔细看看你的 PHP 脚本中的"echo $counter;"部分,这是一个(5000 次)循环。

在解释和执行PHP代码后,Web服务器将结果输出发送到其客户端,通常以生成网页的一部分的形式 - 例如,PHP代码可以生成网页的HTML代码

来自PHP的维基页面

这基本上意味着在返回输出之前将始终执行整个 php 文件。在返回输出之前,循环将执行 5000 次。