【问题标题】:Loading Animation while PHP loop runs在 PHP 循环运行时加载动画
【发布时间】:2020-07-18 00:35:00
【问题描述】:

我想在 php 循环(for 循环)运行时放一个加载动画 可以说这是一个有 10 个数字的 for 循环。我想将动画显示为 1 Loading.. 当秒数开始时,它显示 2 Loading only(不是 1 和 2) 我希望你能正确理解我的问题。你能帮我解决这个问题吗

 <html>
<head>
<style>
.loading:after {
  content: ' .';
  animation: dots 1s steps(5, end) infinite;}

@keyframes dots {
  0%, 20% {
    color: rgba(0,0,0,0);
    text-shadow:
      .25em 0 0 rgba(0,0,0,0),
      .5em 0 0 rgba(0,0,0,0);}
  40% {
    color: white;
    text-shadow:
      .25em 0 0 rgba(0,0,0,0),
      .5em 0 0 rgba(0,0,0,0);}
  60% {
    text-shadow:
      .25em 0 0 white,
      .5em 0 0 rgba(0,0,0,0);}
  80%, 100% {
    text-shadow:
      .25em 0 0 white,
      .5em 0 0 white;}}


</style>
<script type="text/javascript">

</script>
</head>
<body>               
<?php
$i=0;
for ($i=0;$i <= 10; $i++)
{
  echo "  <p class='loading'>$i Loading</p>";
}
?>
  </body>
</html>

【问题讨论】:

  • PHP 首先运行,然后将生成的源代码提供给浏览器。你需要使用 JS,也许是 AJAX。循环数字不是 PHP 所需要的,JS 也有 for
  • 是的,感谢您提供的信息。但问题是,在实际场景中,我在运行循环时调用 PHP 函数(PUT 请求)。
  • 如何在运行 php 循环同步时运行 javascript 循环

标签: javascript php css loading


【解决方案1】:

按照您的设置方式,您想要的都是不可能的。那是因为 PHP 的工作原理。

当 PHP 嵌入到这样的 HTML 文件中时,它会在页面发送给用户之前在服务器上运行。时间线是这样的:

  1. 用户请求页面
  2. 服务器找到该页面的文件
  3. 服务器运行每个块内的代码,并在结果中替换 php 标记。
  4. 服务器将生成的 HTML 文档发送给用户

如你所见,当用户看到任何东西时,所有的 php 代码都已经完成了。

要在您的网页中获得任何类型的动态行为(像加载栏),您必须使用 JavaScript(或像 TypeScript 那样编译成 JS 的东西)。这是因为 JavaScript 代码与 HTML 一起发送给用户,并在页面加载后由用户的浏览器执行

您可能想显示一个进度表,因为您想运行一些需要一段时间的 PHP 代码。你仍然可以这样做。您可以创建一个独立的 PHP 文件来执行您想要的任务,然后让页面上的 JavaScript 向该服务器发送第二个请求,并在显示其进度的同时获得结果,而不是将 PHP 嵌入 HTML 中。您要搜索的术语是“PHP REST 服务器”(用于服务器)和“JavaScript XHR”或“JavaScript fetch”,用于从客户端发送请求。

【讨论】:

    猜你喜欢
    • 2021-01-07
    • 2020-11-19
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多