我想更改位于文档开头的set变量的效果,例如:
if(isset($var)){
// Show Loading Message
}
// Whole bunch of code to load a report
unset($var); // To remove the loading message
我希望代码末尾的减速通过删除变量来删除上面的加载消息。有没有办法用PHP做到这一点?
谢谢!
注意:我理解程序通常如何工作,问题是如果使用PHP有一种方法可以解决这个典型的模型输出。
答案 0 :(得分:2)
您无法使用PHP删除已经输出到浏览器的内容 - 一旦您输出加载消息,从PHP的角度来看它已经消失了。
你必须在页面上有一些javascript来操作DOM并以这种方式删除文本节点。
例如:
print '<div id="loading_message">Loading, please wait</div>';
... bunch of code ...
print '<script type="text/javascript">var e = document.getElementById("loading_message"); e.parentNode.removeChild(e); </script>';
答案 1 :(得分:1)
你必须做客户端; PHP脚本生成的所有HTML都将发送到浏览器,无法再次检索。要在客户端执行此操作,请为加载div提供ID,例如#loading
。然后,在PHP脚本的末尾,粘贴一些JavaScript将隐藏div。这是一个jQuery示例:
加载div:
<div id="loading">Loading...</div>
jQuery(从PHP文件的底部回显):
<script> $("#loading").hide(); </script>
修改强>
对于一个普通的JavaScript解决方案,请参阅@Chris的回答
希望这有帮助,
詹姆斯
答案 2 :(得分:0)
嗯,实际上有办法处理PHP并在完成处理之前发送到浏览器窗口。
这是一种新手,新手,新手的做法,但我想至少分享。
您可以随时使用flush()
命令在页面仍在渲染时将当前处理时间输出到浏览器。
您也可以在输出缓冲区输出之前进行处理并将处理输出存储在输出缓冲区中。
ob_start();
//Do a bunch of PHP stuff
$results = ob_get_contents();
ob_end_clean();
echo $results
就像我说的...... HOKIE用于一般网页处理。使用jQuery或你自己的JS,但也许这会在其他地方派上用场。