显示用户脚本正在加载

时间:2014-01-30 21:36:21

标签: php html mysql highcharts

我有一个问题,我不知道如何解决。基本上,我有一个MySQL数据库,其中包含了大量的信息。 然后我有几个PHP站点,它们从数据库中检索数据,然后进行一些分析和计算,然后使用表格和高图图表输出它。 现在一切正常,但有一个小问题。问题是当有人想要进入网站时,它会在浏览器的状态栏中显示“Waiting for ....”,并在大约10-15秒后显示该页面。问题显然在于网站首先联系MySQL数据库并且实际上为了进行所有各种计算,有很多调用数据库等。因此计算工作,我唯一需要的是以某种方式告诉在加载页面时,用户“实际上正在发生某事”。 PHP站点的结构看起来像顶部的PHP代码,它计算所有变量,然后是实际的HTML,在某些地方有回显的变量。 我尝试过这样的东西:

echo "Loading";
flush();

我把它放在最顶端,但我得到的是同样的“没有发生”的间隔,随后整个页面显示,只是我在顶部有“加载”文本,这显然不是我的想要,因为它与页面的其余部分同时显示。

我真的很感激任何想法如何解决这个问题。我尝试将HTML正文标记放在最顶层的PHP前面,但这也没有帮助,我显然无法将脚本放在最后,因为变量首先必须在显示之前进行计算。 / p>

3 个答案:

答案 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>