3

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

编辑 我了解如何使用单独的 PHP 脚本来查询数据库,所以我的问题更多是如何设置 JavaScript 和 Ajax 调用

4

2 回答 2

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();
                        }
                    }
            });
}

于 2013-01-22T22:02:37.263 回答
0

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

记住要处理服务器端处理死掉(因此永远不会完成!)

于 2013-01-22T21:39:42.693 回答