gpt4 book ai didi

javascript - php jquery ajax增量输出

转载 作者:行者123 更新时间:2023-12-01 05:37:34 24 4
gpt4 key购买 nike

我有一个调用 AJAX 脚本的网页 - ajax.php 。我正在使用 JQuery 发送 AJAX 请求。

脚本ajax.php通过 $_REQUEST 接收一些参数,基于此开始处理。该处理涉及多个步骤,在每个步骤结束时我想将一些反馈发送回页面 - 例如:

  • 第 1 步已完成
  • 第 2 步已完成
  • ...

完成所有步骤后 - 脚本 ajax.php将输出一个 TXT 文件,我通过以下方式输出:

header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="output.txt"');

我的问题是:

我有一个div在我想向用户显示步骤 1 已完成、步骤 2 已完成的页面中,...如果我使用 JQuery.ajax() ,将.done函数被多次调用?如果不是,最好的处理方法是什么?我可以使用 ob_implicit_flush在 PHP 中发送“步骤 x 已完成”消息?

最后,我将如何处理 .txt 文件的输出以便用户的浏览器下载它?我不想将文件保存在服务器上,然后陷入服务器磁盘空间、删除的 cron 作业等麻烦。

我可以选择执行多个 AJAX 请求 - 但我又不想这样做,因为这将使我的代码逻辑非常复杂,并且我必须在 $_SESSION 中保存大量数据。在请求中可见,这又是我不想做的事情。

最佳答案

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

关于javascript - php jquery ajax增量输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com