使用jQuery从PHP获取几个响应

时间:2012-10-31 00:07:03

标签: php jquery ajax

我希望在屏幕上显示PHP脚本正在执行的基于文本的描述。例如触发该函数,然后启动PHP脚本。然后用户看到“步骤1开始”......然后几秒钟后“步骤2开始”......等等。可能有数百个步骤,我希望用户看看发生了什么。

我的jQuery:

$(document).ready(function() {
    $('#start').click(function() {
        $.ajax({
          url: "do.php",
          success: function( html ) {
              $("#results").append(html);
              return false;
          }
        });
    });
}); 

然后我的PHP(说明问题,我的实际代码做了很多工作):

echo "step 1 done";
sleep(2);
echo "step 2 done";
sleep(2);
echo "step 3 done";

此刻“结果”div只显示“步骤1 donestep 2 donestep 3 done”4秒后一次性全部显示。我希望它显示“第1步完成”,然后在2秒后“第2步完成”,然后又过了2秒“第3步完成”

2 个答案:

答案 0 :(得分:2)

这不是AJAX的工作原理。你正在睡觉你的PHP代码,你的JavaScript只会在它休眠时等待响应。一旦得到响应,它将执行您的功能以更新HTML。

如果您想暂停页面HTML的更新,您可能需要使用类似JSON的东西将您的响应从PHP页面作为单独的元素发送,然后可以在JavaScript中进行迭代。然后,您可以使用setTimeout来显示从PHP页面返回的数据的暂停。

答案 1 :(得分:2)

由于Ajax的异步特性,您必须将不同php文件中的步骤分开,并在$.ajax回调中发出多个success请求,或者更好,请使用deferreds。< / p>