1

我希望在屏幕上显示 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 仅在 4 秒后一次性显示“步骤 1 完成步骤 2 完成步骤 3 完成”。我希望它显示“第 1 步完成”,然后在 2 秒后显示“第 2 步完成”,再过 2 秒后显示“第 3 步完成”

4

2 回答 2

2

这不是 AJAX 的工作方式。你在你的 PHP 代码中睡着了,你的 JavaScript 会在它睡着的时候等待响应。一旦得到响应,它将执行您的函数来更新 HTML。

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

于 2012-10-31T00:10:12.650 回答
2

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

于 2012-10-31T00:12:01.090 回答