在PHP计算期间通知用户w / jquery

时间:2009-07-16 18:34:49

标签: php jquery ajax

我正在用PHP编写代码来分析用户输入。 我希望通过使用jquery的AJAX请求来分析它。 我想在进行计算时向用户提供实时反馈。 例如: “上传输入”,“分析”,“准备最终结果”等等。 我怎么能这样做呢?

2 个答案:

答案 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你自己的服务器。