我对一个运行相当长的时间(1 秒到 3 分钟之间)的 PHP 脚本进行了 jQuery Ajax 调用。它不断地在数据库中记录完成百分比。如何同时继续运行另一个 Ajax 请求以向用户报告 MySQL 数据库的完成百分比?
编辑 我了解如何使用单独的 PHP 脚本来查询数据库,所以我的问题更多是如何设置 JavaScript 和 Ajax 调用
我对一个运行相当长的时间(1 秒到 3 分钟之间)的 PHP 脚本进行了 jQuery Ajax 调用。它不断地在数据库中记录完成百分比。如何同时继续运行另一个 Ajax 请求以向用户报告 MySQL 数据库的完成百分比?
编辑 我了解如何使用单独的 PHP 脚本来查询数据库,所以我的问题更多是如何设置 JavaScript 和 Ajax 调用
在您的 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();
}
}
});
}
您可能需要另一个 URL 来调用数据库中的轮询进度。换句话说,报告进度的不同 PHP 脚本。Ajax 调用可能会使用超时或任何花哨的东西 jQuery 必须定期安排自己(直到服务器调用报告完成)。
记住要处理服务器端处理死掉(因此永远不会完成!)