通过AJAX从PHP请求更新前端

时间:2011-12-28 13:20:34

标签: php jquery ajax comet

我正在创建一个发送简报的脚本。发送邮件的过程是用户点击“发送”,并将AJAX请求发送到sendMail.php。 SendMail.php只接收消息并将其发送给数据库中的所有用户。

当用户点击发送时,会弹出一个对话框,我想要实现的是服务器实时将其当前进度发送回客户端,以便我可以更新进度条并告诉客户端何时全部邮件已发送。

我不确定我应该寻找什么或如何去做这件事。如果这是任何帮助我正在使用jQuery

对于任何含糊不清的道歉,这对我来说是新的,所以我不确定你需要知道什么样的东西,只要问你是否需要我详细说明:)

干杯:)

编辑:似乎有些混乱,我不打算做一个简单的AJAX请求,我可以做得很好。我正在努力的是从服务器递增地将数据发送回客户端。

3 个答案:

答案 0 :(得分:1)

我的方法是为请求分配UUID。服务器应使用UUID作为密钥更新会话进度。 然后,Javascript可以使用ajax jquery接口重复查询服务器以获取进度。

因此整个脚本看起来像这样(伪代码)

<script>

function pollServer(uuid)
{
   $.ajax({
         url:'/pollProgress',
         // the response is the progress
         success:function(result){ 
                if (progress == 100) { ... /* finish */ } 
                else
                {
                     ... // update the progress somewhere.. for example $("#progress").text(result)
                     setTimeout(function(){pollServer(uuid)},100);
                }
        }
}
// first request to server will be the "send" request
$.ajax({
   url:'/sendMail',
   //  the server should send the UUID as the result
   success:function(result){ pollServer(result)}
})
</script>

答案 1 :(得分:0)

在此处查看jQuery的$.post()功能:http://api.jquery.com/jQuery.post/。这允许您向服务器端脚本发送请求并接收实时结果。

答案 2 :(得分:0)

以下是概述: http://ajaxpatterns.org/Progress_Indicator

这是一些详细的AJAX代码: http://www.redips.net/javascript/ajax-progress-bar/

这是显示进度条的好方法: http://docs.jquery.com/UI/Progressbar