首页 > 解决方案 > 显示部分页面,然后插入需要一段时间才能完成的函数的输出

问题描述

在从函数输出内容之前,我需要显示页面的大部分内容。该函数需要一段时间来执行,并返回页面的一些内容。我需要先显示页面的其余部分,然后运行函数,然后“插入”函数输出。

看来我需要在函数的开头使用 ob_start ,然后将该数据存储在带有ob_get_content(). 但我还需要在页面的其余部分显示后运行该函数。

这是我尝试过的一些代码但没有成功(这是body标签内的内容区域):

<div id='part1'>
   <p>here is part 1 of the content</p>
</div>
<div id='part2'> // this is where the function output will be inserted after processing it
   <p>part 2</p>
<?php echo long_function();?>
</div>
<div id='part3'>
   <p>this is part 3 of the content
</div>

<?php
function long_function() {
   // some process that takes a long time to get data
   // and stores it in the $part2_content
   return $part2_content;
}

结果应该是显示part1和part3 div内容。然后,当long_function()完成收集数据时,该数据应在“part2”部分中输出。

我试图ob_start()在 的开头放置一个long_function(),然后$part2_content = ob_get_contents()存储该输出数据(没有 ob_flush)。

我认为我可能需要向“part2”ID 添加某种 DOM“写入”,但不确定要完成的正确组合。

标签: phpflush

解决方案


基于这个完全可以接受的答案: https ://stackoverflow.com/a/46871956/17292588

PHP 是一种服务器端编程语言。它在您请求页面时执行。所以你不能在页面加载后执行它。如果您需要检查客户端是否已加载某些内容,则必须使用诸如 JavaScript 之类的客户端编程语言。

我建议您将它long_function放在另一个路由中,并在加载页面期间(或之后)使用 Ajax 请求它。


推荐阅读