【问题标题】:Display a message when a form is submitted to run a PHP script [duplicate]提交表单以运行 PHP 脚本时显示消息 [重复]
【发布时间】:2017-09-14 13:28:25
【问题描述】:

我对这个有点困惑。当提交在同一页面上运行 PHP 的表单(请参见下面的代码)时,我试图显示“请稍候...”消息。它似乎在运行 PHP,然后重新加载页面。

我添加了 sleep(10) 只是为了测试目的。

谁能帮忙?

谢谢,

约翰

编辑:好的,我现在了解服务器端和客户端之间的区别。所以 - 我的问题是:如何在单击提交时和运行 PHP 之前显示一条消息?

<?php
if (isset($_POST['submit'])) {
echo "Please wait..."; //display a loading message
}
?>

<form action="test.php" method="post">
    <input type="test"></input>
    <button name="submit" type="submit">SEND</button>
</form>

<?php
if (isset($_POST['submit'])) {
sleep(10); //run a script that takes a while
}
?>

【问题讨论】:

标签: php html


【解决方案1】:

您的 PHP 脚本将无法发送消息然后重定向。您需要在等待页面上使用 JavaScript 并重定向。如果您不尝试重定向,则不确定为什么需要请稍候消息。

setInterval(function(){window.location.href="your_url" }, 10000);

对于下载脚本,它需要将内容类型设置为 PDF,这意味着您不能在此之前发送任何内容(否则标头已发送错误)。

两种可能的解决方案:
1.您应该在用户单击的页面上显示“请稍候”,然后在另一个页面中打开下载脚本。
2.下载页面可以显示html,然后使用iframe下载文件。 Using jQuery and iFrame to Download a File

【讨论】:

  • 实际的 PHP 代码是使用 HTML2PDF 生成 PDF,这需要几秒钟。我不想用大量代码使帖子过于复杂,因此仅包含 sleep(10) 用于演示目的。
  • 这就是所谓的 XY 问题 xyproblem.info/。您应该首先将您要完成的目标描述为目标。查看我的编辑。
猜你喜欢
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 2014-05-29
  • 2015-10-05
  • 2020-07-16
  • 2016-10-11
  • 2015-08-26
  • 2021-06-27
相关资源
最近更新 更多