簡體   English   中英

控制器中的PHP刷新信息

[英]PHP flush information in controller

我正在嘗試從PHP CodeIgniter中的控制器發送數據以進行查看。
我正在通過ajax調用PHP函數,並使用ob_flush將數據發送回去,但問題是所有刷新調用都在以后的調用中串聯在一起。

例如:第一沖洗發送1第二沖洗調用發送12而不是2

這是我的控制器循環。

foreach ($csv_array as $row) {
    ob_start();
    $varint=$varint+1;
    echo $varint;
    $content = ob_get_contents();
    ob_end_clean();
    echo $content;
    ob_flush();
    flush();
    while (ob_get_level() > 0) {
        ob_end_clean();
    }
}

我的ajax調用是這樣的:

document.getElementById('upld').onclick = function() {
    xhr = new XMLHttpRequest();
    var mydata = new FormData($('#form')[0]);
    xhr.open("POST", base_url+"index.php/controller/function", true);
    xhr.onprogress = function(e) {
        console.log(e.currentTarget.responseText);
    }
    xhr.onreadystatechange = function(data='') {
        if (xhr.readyState == 4) {
            console.log(myArr);
        }
    }
    xhr.send(mydata);
};

flush()文檔說:

flush()可能無法覆蓋Web服務器的緩沖方案,並且對瀏覽器中的任何客戶端緩沖都沒有影響。 它也不會影響PHP的用戶空間輸出緩沖機制。 這意味着,如果您正在使用ob_flush()和flush()來刷新ob輸出緩沖區,則必須同時調用它們。

在您的情況下,您可以用ob_flush()替換flush() ,因為我不認為您要刷新系統輸出緩沖區。

作為此代碼的額外一點:

$content = ob_get_contents();
ob_end_clean();

可以壓縮為一個函數調用,該函數調用是前面兩個命令組合的別名:

$content = ob_get_clean();

ob_get_clean()文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM