我希望在屏幕上显示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步完成”
答案 0 :(得分:2)
这不是AJAX的工作原理。你正在睡觉你的PHP代码,你的JavaScript只会在它休眠时等待响应。一旦得到响应,它将执行您的功能以更新HTML。
如果您想暂停页面HTML的更新,您可能需要使用类似JSON的东西将您的响应从PHP页面作为单独的元素发送,然后可以在JavaScript中进行迭代。然后,您可以使用setTimeout
来显示从PHP页面返回的数据的暂停。
答案 1 :(得分:2)
由于Ajax的异步特性,您必须将不同php文件中的步骤分开,并在$.ajax
回调中发出多个success
请求,或者更好,请使用deferreds。< / p>