使用Ajax显示另一个Ajax请求调用的PHP脚本的进度

时间:2013-01-22 21:34:47

标签: php ajax get progress simultaneous

我对一个运行了相当长时间(1到3分钟)的PHP脚本进行jQuery Ajax调用。它不断记录数据库中完成的百分比。如何连续运行另一个Ajax请求以报告从MySQL数据库到用户的完成百分比?

修改 我理解如何使用单独的PHP脚本来查询数据库,所以我的问题是如何设置JavaScript和Ajax调用

2 个答案:

答案 0 :(得分:6)

在你的AJAX调用开始你的进程之后,你可以在一个循环中进行另一个AJAX调用,该循环请求,返回并呈现当前百分比完成,直到它达到100%。基本上,一个AJAX调用启动进程,然后是一系列检查状态的调用。

更新:这是一些简单的JavaScript,可以实现您的目标:

<script>
function startProcess() {
    //start your long-running process
    $.ajax(
            {
                type: 'GET',
                url: "/longRunningProcess",
                async: true,
                success:
                    function (data) {
                        //do something - your long process is finished
                    }
            });
}
function getStatus() {
    //check your progress
    $.ajax(
            {
                type: 'GET',
                url: "/checkProgress",
                async: true,
                success:
                    function (data) {
                        //assume the data returned in the percentage complete
                        var percentage = parseInt(data);

                        //write your status somewhere, like a jQuery progress bar?

                        if (percentage < 100) {
                            //if not complete, check again
                            getStatus();
                        }
                    }
            });
}

答案 1 :(得分:0)

您可能需要另一个URL来调用来自数据库的轮询进度。 换句话说,报告进度的不同PHP脚本。 Ajax调用可能会使用超时或jQuery必须定期安排的任何花哨的东西(直到服务器调用报告完成)。

请记住处理服务器端处理死亡的特殊情况(因此永远不会完成!)