RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 579786
Accepted
Lightness
Lightness
Asked:2020-10-19 00:34:16 +0000 UTC2020-10-19 00:34:16 +0000 UTC 2020-10-19 00:34:16 +0000 UTC

如何在一个 AJAX 请求中处理多个回显?

  • 772

假设我们有这样的ajax查询:

$.ajax({
    url: "action.php",
    success: function (response) {
    //какое-то действие здесь
    };
});

并且action.php:

   <?php 
    while(true){
    //выполняется какая-то логика
    echo json_encode(//какие-то данные);
    }
   ?>

是否可以在request中每次echo处理ajax完这个数据,然后等到下一个数据到来?

php
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Buka
    2020-10-19T02:18:37Z2020-10-19T02:18:37Z

    http 工作在请求-响应原则上,为了让你在没有客户端请求的情况下从服务器发送消息,你需要实现 web 套接字协议(也许还有其他的,我没有检查过),或者发送每个响应后的请求(好吧,接收它的部分)

    • 0
  2. SLy_huh
    2020-12-26T15:21:44Z2020-12-26T15:21:44Z

    好吧,一般来说,如果通过 vanilla JS(XHR) ,那么就会有一个事件progress具有. 如果您在 50 毫秒 ( ) 处切断回声,(即,在这样的时间间隔内,浏览器会检查来自服务器的内容),但这对于 ASCII 中的拉丁语是正确的,因为 在 UTF-8 中,每个字符都存储在 2 个字节中,这种读取中间状态的尝试可能会导致显示不正确。这个决定是一个拐杖,毫无道理地扭曲,而且通常是不合适的,但是,因为它是必要的:eventresponseTextusleep(500000)

    echo 'foobar'; usleep(500000)

    xhr.onprogress = function(event){ console.log(event.responseText); }


    如果任务是跟踪服务器上某个非常大的进程的进度,那么我认为最正确的做法是生成一个进程 ID,将其发送到客户端,再发送到数据库,然后在那里更新进度. 并使用 ajax,通过第三方 php 文件,按 ID 检查进度。从示意图上看,它看起来像这样:

    ajax =(event)=> php(process) =(uid)=> ajax =(uid)=> php(progress_observer) =(percentage)=> ajax =(uid)=> php(progress_observer) =(percentage_100)= >阿贾克斯

    • 0
  3. Best Answer
    lampa
    2020-05-02T15:24:29Z2020-05-02T15:24:29Z

    使用所谓的comet:

    在服务器端:

    for($i=0; $i < 10; $i++) {
        sleep(1);
    
        $arr = array("time" => time());
    
        echo "<script>parent.callback(" . json_encode($arr) . ")</script>";
    
        flush();
        ob_flush();
    }
    

    在客户端:

    <iframe id="comet"></iframe>
    <script>
    function start() {
        document.getElementById('comet').src = 'comet.php';
    }
    function stop() {
        document.getElementById('comet').src = '';
    }
    
    function callback(data) {
        document.getElementById("div").innerHTML += JSON.stringify(data);
    }
    </script>
    
    <input type="button" onclick="start()" value="start">
    <input type="button" onclick="stop()" value="stop">
    <div id="div"></div>
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5