1

私のphpコードが以下に似ているとしましょう。. .

$range = range(0, 5);
foreach ($range as $times) {
if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<1; $i++){
echo "<br>example ".$times;
echo str_pad('',4096)."\n";   
ob_flush();
flush();
sleep(1.2);
}
ob_end_flush();
}

それが表示するものはです。. .

example1
example2
example3
example4
example5

次の行を表示する前に短時間待機します。一度に5つすべてを表示したくない、example1を次のものに置き換えたいなど、5つすべてに対してこれはphpで可能ですか? どんな答えでも歓迎

4

2 に答える 2

3

ページに既にある要素を置き換えるには、javascript を使用する必要があります。

<p id="ob">1</p>
<?php
$range = range(0, 5);
foreach ($range as $times) {
    if (ob_get_level() == 0) ob_start();
    for ($i = 0; $i<1; $i++){
        echo "<script>document.getElementById('ob').innerHTML ='example$times';</script>";
        echo str_pad('',4096)."\n";
        ob_flush();
        flush();
        sleep(1.2);
    }
    ob_end_flush();
}
?>

または、AJAX を使用してサーバーをポーリングして次の値を取得することをお勧めします。

<?php
if(isset($_GET['poll'])){
    echo $_GET['poll']+1;
    die;
}
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var value = 0;
function poll(){
    setTimeout(function(){
        $.ajax({ url: "./test.php?poll="+value,cache: false,
        success: function(data){
            value = data;
            $("#ob").html('example'+value);
            //Next poll
            poll();
        }});
    }, 1200);
}

$(document).ready(function(){
    poll();
});
</script>
<p id="ob">example0</p>
于 2013-02-14T22:25:22.143 に答える
2

htmlを出力していると仮定すると、javascriptでクライアント側で出力する必要があります。

phpの代替手段は、1行を表示し、ページをリロードして次の行を表示することです。不必要に複雑でリソースの浪費。

phpは、すでにブラウザに送信されているhtmlを変更できないことに注意してください。

于 2013-02-14T22:08:24.497 に答える