如何正确刷新 PHP 输出缓冲区?

罗伯特·麦地那

我需要 PHP 将输出流式传输到 Javascript 但 Javascript 保留旧响应并像这样打印它们......

控制台日志:

[0]: Line to show.
[0]: Line to show.[1]: Line to show. 
[0]: Line to show.[1]: Line to show.[2]: Line to show.
[0]: Line to show.[1]: Line to show.[2]: Line to show.[3]: Line to show.
[0]: Line to show.[1]: Line to show.[2]: Line to show.[3]: Line to show.[4]: Line to show.

[0]: Line to show.[1]: Line to show.[2]: Line to show.[3]: Line to show.[4]: Line to show.Array
(
    [0] => [0]: Line to show.
    [1] => 
    [2] => 
    [3] => [1]: Line to show.
    [4] => 
    [5] => 
    [6] => [2]: Line to show.
    [7] => 
    [8] => 
    [9] => [3]: Line to show.
    [10] => 
    [11] => 
    [12] => [4]: Line to show.
    [13] => 
    [14] => 
)

因此 Javascript 控制台日志声明 responseText 正在“保存”旧响应。但是,看看我保存在PHP中的数组,您会发现以前没有任何回显都被刷新到JS。

Javascript:

                $.ajax({
                    url: "../controller/controller.php", 
                    type: "POST",
                    data: {operation: 'rxMode'},
                    xhr: function(){
                        var xhr = $.ajaxSettings.xhr();
                        xhr.onprogress = function(e){ console.log(e.currentTarget.responseText); };
                        console.log(xhr);
                        return xhr;
                    }
                 });

PHP:

        $out = array();
        for ($i = 0; $i<5; $i++){
            echo "[$i]: Line to show.";
            array_push($out, ob_get_contents());
            ob_flush();
            array_push($out, ob_get_contents());
            flush();
            array_push($out, ob_get_contents());
            sleep(2);
        }
        print_r($out);

我想要的 responseText 是

[0]: Line to show.
[1]: Line to show.
[2]: Line to show.
[3]: Line to show.
[4]: Line to show.

编辑:我不想删除旧的回复,而是希望 Javascript 只给我我想要的 responseText。

巴马

responseText始终包含来自服务器的整个响应。当您使用该progress事件时,它包含迄今为止累积的响应,而不仅仅是最近从服务器刷新添加到响应中的增量字符串。

将前一个响应文本的长度保存在一个变量中,然后在随后的调用中只打印之后的子字符串。

var responseLen = 0;
$.ajax({
    url: "../controller/controller.php", 
    type: "POST",
    data: {operation: 'rxMode'},
    xhr: function(){
        var xhr = $.ajaxSettings.xhr();
        xhr.onprogress = function(e){
            console.log(e.currentTarget.responseText.substr(responseLen)); 
            responseLen = e.currentTarget.responseText.length;
        };
        console.log(xhr);
        return xhr;
    }
 });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP输出缓冲区刷新,然后清除

来自分类Dev

如何在php中设置输出缓冲区名称?

来自分类Dev

如何在输出缓冲区时查看包含文件中的php错误?

来自分类Dev

如何在输出缓冲区时查看包含文件中的php错误?

来自分类Dev

输出缓冲区是否自动刷新?

来自分类Dev

输出缓冲区是否自动刷新?

来自分类Dev

如何尽快输出固定缓冲区?

来自分类Dev

在Apache / Nginx设置中刷新输出缓冲区

来自分类Dev

每N个字符刷新输出缓冲区

来自分类Dev

输出缓冲区与PHP中的file_get_contents

来自分类Dev

PHP:是否可以获取非阻塞输出缓冲区?

来自分类Dev

如何禁用PHP的文件读/写缓冲区?

来自分类Dev

如何禁用PHP的文件读/写缓冲区?

来自分类Dev

如何在tmux shell的输出缓冲区中搜索?

来自分类Dev

GNU Radio 输入和输出缓冲区如何工作?

来自分类Dev

如何刷新SerialDevice的输入缓冲区

来自分类Dev

缓冲区何时刷新

来自分类Dev

C ++刷新缓冲区

来自分类Dev

即使缓冲区已满,也可以自动刷新C中已完全缓冲的输出流吗?

来自分类Dev

如何在函数中使用 HTMLIZE 并将本地缓冲区更改为 HTMLIZE 输出缓冲区?

来自分类Dev

输出到文件时如何设置输出缓冲区的宽度/列?

来自分类Dev

为什么刚创建输出缓冲区时需要刷新它?

来自分类Dev

为什么在每次使用printf时都不必刷新输出缓冲区?

来自分类Dev

在正在运行的程序中强制输出缓冲区刷新

来自分类Dev

在PHP中,输出缓冲区打印到哪里?它印有什么东西?

来自分类Dev

数据库迁移后,PHP在输出缓冲区中有换行符

来自分类Dev

PHP输出缓冲区显示白屏,方法返回无错误

来自分类Dev

PHP exec,在每次exec调用后清除输出缓冲区?

来自分类Dev

WordPress 中的 PHP DOM - 在输出缓冲区 HTML 中添加属性

Related 相关文章

  1. 1

    PHP输出缓冲区刷新,然后清除

  2. 2

    如何在php中设置输出缓冲区名称?

  3. 3

    如何在输出缓冲区时查看包含文件中的php错误?

  4. 4

    如何在输出缓冲区时查看包含文件中的php错误?

  5. 5

    输出缓冲区是否自动刷新?

  6. 6

    输出缓冲区是否自动刷新?

  7. 7

    如何尽快输出固定缓冲区?

  8. 8

    在Apache / Nginx设置中刷新输出缓冲区

  9. 9

    每N个字符刷新输出缓冲区

  10. 10

    输出缓冲区与PHP中的file_get_contents

  11. 11

    PHP:是否可以获取非阻塞输出缓冲区?

  12. 12

    如何禁用PHP的文件读/写缓冲区?

  13. 13

    如何禁用PHP的文件读/写缓冲区?

  14. 14

    如何在tmux shell的输出缓冲区中搜索?

  15. 15

    GNU Radio 输入和输出缓冲区如何工作?

  16. 16

    如何刷新SerialDevice的输入缓冲区

  17. 17

    缓冲区何时刷新

  18. 18

    C ++刷新缓冲区

  19. 19

    即使缓冲区已满,也可以自动刷新C中已完全缓冲的输出流吗?

  20. 20

    如何在函数中使用 HTMLIZE 并将本地缓冲区更改为 HTMLIZE 输出缓冲区?

  21. 21

    输出到文件时如何设置输出缓冲区的宽度/列?

  22. 22

    为什么刚创建输出缓冲区时需要刷新它?

  23. 23

    为什么在每次使用printf时都不必刷新输出缓冲区?

  24. 24

    在正在运行的程序中强制输出缓冲区刷新

  25. 25

    在PHP中,输出缓冲区打印到哪里?它印有什么东西?

  26. 26

    数据库迁移后,PHP在输出缓冲区中有换行符

  27. 27

    PHP输出缓冲区显示白屏,方法返回无错误

  28. 28

    PHP exec,在每次exec调用后清除输出缓冲区?

  29. 29

    WordPress 中的 PHP DOM - 在输出缓冲区 HTML 中添加属性

热门标签

归档