我有一个问题,我不知道如何解决。基本上,我有一个MySQL数据库,其中包含了大量的信息。 然后我有几个PHP站点,它们从数据库中检索数据,然后进行一些分析和计算,然后使用表格和高图图表输出它。 现在一切正常,但有一个小问题。问题是当有人想要进入网站时,它会在浏览器的状态栏中显示“Waiting for ....”,并在大约10-15秒后显示该页面。问题显然在于网站首先联系MySQL数据库并且实际上为了进行所有各种计算,有很多调用数据库等。因此计算工作,我唯一需要的是以某种方式告诉在加载页面时,用户“实际上正在发生某事”。 PHP站点的结构看起来像顶部的PHP代码,它计算所有变量,然后是实际的HTML,在某些地方有回显的变量。 我尝试过这样的东西:
echo "Loading";
flush();
我把它放在最顶端,但我得到的是同样的“没有发生”的间隔,随后整个页面显示,只是我在顶部有“加载”文本,这显然不是我的想要,因为它与页面的其余部分同时显示。
我真的很感激任何想法如何解决这个问题。我尝试将HTML正文标记放在最顶层的PHP前面,但这也没有帮助,我显然无法将脚本放在最后,因为变量首先必须在显示之前进行计算。 / p>
答案 0 :(得分:1)
您可以先显示页面,然后对网站加载的数据发出Ajax请求。通过这种方式,您可以告诉用户您在背景中执行操作并在加载数据时显示数据。
您可以像http://api.jquery.com/jquery.ajax/一样发出Ajax请求。
答案 1 :(得分:0)
使用php无法完成,php是一种服务器端脚本语言,它将HTML作为对请求的响应并将其发送给客户端,然后消亡,并且不知道将要发生什么在客户端。这意味着:1个请求= 1个响应。
在加载页面之前,它无法回复之前的内容,之后回显剩下的内容。
我认为你不需要Ajax调用这个,一个简单的HTML和jQuery可以帮助你。
像这样:
<body onload='$(".loader").hide();$(".contents").show();'>
<span class='loader'>Loading</span>
<div style='display:none' class='contents'>
here is the contents
</div>
</body>
答案 2 :(得分:0)
您可以异步请求您的php脚本。所以在你的代码中,你可以做到
<body>
<script type="text/javascript" src="path_to_jquery"></script>
<script>
$.get(path_to_php_script, function(data) {
//data here contains stuff from the db.
});
</script>
</body>