我正在用PHP编写代码来分析用户输入。 我希望通过使用jquery的AJAX请求来分析它。 我想在进行计算时向用户提供实时反馈。 例如: “上传输入”,“分析”,“准备最终结果”等等。 我怎么能这样做呢?
答案 0 :(得分:1)
您必须使用不同的后端脚本执行处理,而不是发送请求的脚本。您的原始ajax请求可以存储要分析的用户输入,另一个进程检查新数据是否定期处理并在找到一些时开始工作。然后,该后台进程可以记录其进度,例如使用文件或数据库。
后续的ajax请求将检查进度文件或数据库条目,并向用户显示进度。
另一个(更复杂的)解决方案是使用Comet将状态信息从服务器推送到浏览器。正如StackOverflow question 136012中所描述的那样,JQuery中有一个彗星插件正在进行中。
答案 1 :(得分:1)
假设您有一个位于/service-status.php的服务,它检查了作业的状态并返回了一个字符串,您可以在一个间隔内执行此类操作。
var intervalId;
intervalId = setInterval( function() {
$.ajax({
type: "POST",
url: "/service-status.php",
data: "jobid=" + id,
success: function(msg){
if (msg === 'Finished') {
clearInterval( intervalId );
}
alert( "Status: " + msg );
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("He's dead Jim"):
clearInterval( intervalId );
}
})
}, 500);
这将每隔500毫秒轮询一次您的服务。它还假设您完成后返回'完成'。相应调整。我也可以在那里放一个计数器来清除间隔以防万一,所以你不要DDOS你自己的服务器。