如何在不同的时间间隔内获得超过1个ajax呼叫响应?

时间:2014-11-27 10:19:40

标签: php jquery ajax codeigniter

当我正在进行Ajax调用时,我需要在前端显示后端正在运行的内容。

例如,我正在上传文件。那时我有以下步骤来完成。

  1. 将文件数据插入数据库
  2. 根据步骤1的响应
  3. 将部分文件移至文件夹
  4. 最后更新数据库
  5. 通过单一的ajax

    • 第1步运行时,我需要显示:将文件插入数据库......
    • 在第2步中:将文件移动到文件夹...
    • 在第3步中:更新表格

    我知道如何一次获得3个回复

    json_array('res1' => '', 'res2' => '', 'res3' => '')
    

    但是我需要在3个时间间隔内获得相同的响应。请查看以下代码以了解您的理解

    function file_sampe_upload(){
        //code for insert
        .......
        echo json_array('status' => 1, 'res1' => 'Files inserted successfully');
       //Code for moving files to specific folder
       ......
       echo json_array('status' => 1, 'res2' => 'Files moved successfully');
       //Code for updating the files
       ......
       echo json_array('status' => 1, 'res3' => 'Files updated successfully');
    exit;}
    

    有没有可能这样做?建议是最有帮助的。

    更新: -

    概念输出缓冲会对这个问题有所帮助吗?

2 个答案:

答案 0 :(得分:0)

您需要为此执行3个AJAX请求。所以像这样:

function file_sampe_insert(){
    echo json_array('status' => 1, 'res1' => 'Files inserted successfully');
    exit;
}

function file_sampe_move(){
    echo json_array('status' => 1, 'res2' => 'Files moved successfully');
    exit;
}

function file_sampe_upload(){
   echo json_array('status' => 1, 'res3' => 'Files updated successfully');
    exit;
}

1. AJAX request which call the insert 
2. AJAX request which call the move
3. AJAX request which call the upload

答案 1 :(得分:0)

您似乎想要使用 WebSockets http://en.wikipedia.org/wiki/WebSocket

  1. 服务器PHP: http://socketo.me/

  2. PHP WebSocket客户端:(发送有关进度的信息) https://github.com/lemmingzshadow/php-websocket

  3. Javascript客户端:(用于接收) http://autobahn.ws/js/