在PHP执行时加载页面

Jos*_*Cox 2 html javascript php ajax

我想做的事情:显示加载gif或文本...至少在执行php之前和期间显示黑屏.

我试过了什么

我已经使用flush()进行了测试,直到整个php进程完成后我才得到任何结果.我也不是特别喜欢这个概念,但我会采取任何措施.

我正在考虑使用两个页面来完成这个,虽然目前的项目已接近完成,并且需要一些时间来整合分散的html/php代码.

目前我正在做3-simpleXML_load_file(),1-include(),1-file_get_contents()我有javascript函数绘制来自simpleXML_Load_file()之一的数据...

我将代码的部分移动到另一个文件,但这是一项艰巨的任务.所以我喜欢一些关于如何进行的建议或建议.

如果我需要详细说明请问!

谢谢,JT

 <html>
 <head>
 <?php
$lat = $_POST['Lat'];
$long = $_POST['Lon'];
 $weather_hourly = simplexml_load_file('http:....lat='.$lat.'&lon='.$long.'');
 ?>
 <script type="text/javascript">

 <!--Plot function-->
 $(function() 
 {
 var d = 
 [
<?php
//Pulling in hourly data to plot temp vs time
$i=0;
$array=array();
while ($i<=100)
{
    echo '['. (strtotime($weather_hourly->data->{'time-layout'}->{'start-valid-time'}[$i])*1000) .','.$weather_hourly->data->parameters->temperature->value[$i] .'],';
    $value = $weather_hourly->data->parameters->temperature->value[$i];
    array_push($array,$value);
    $i++;
}
    foreach ($array as $key => $value) 
    { 
                    $value = (string) $value;
                    $min_sec_array[] = $value;
    }
?>

</script>
 </head>
 <body>
 <div id=graph>
 </div>
 </body
Run Code Online (Sandbox Code Playgroud)

Set*_*eth 9

您可以通过使用AJAX和多个页面来实现此目的的主要方式.要做到这一点,第一页不应该进行任何处理,只需将加载图像放在这里.接下来,发出一个AJAX请求,一旦请求完成,您可以在页面上显示结果或重定向到另一个页面.

例:

文件1(也必须包含jQuery),将其与加载器动画一起放在正文中:

<script language="javascript" type="text/javascript">
$(function(){
    var mydata = {};
    $.post('/myajaxfile.php', mydata, function(resp){
        // process response here or redirect page
    }, 'json');
});
</script>
Run Code Online (Sandbox Code Playgroud)

更新:这是一个基于您的代码的更完整的示例.这还没有经过测试,需要包含jQuery库,但这应该给你一个好主意:

文件1:file1.html

</head>
 <body>
 <?php
$lat = $_POST['Lat'];
$long = $_POST['Lon'];
 ?>
 <!-- Include jQuery here! Also have the loading animation here. -->
 <script type="text/javascript">
$(function(){

    $.get('/file2.php?Lat=<?php echo $lat; ?>&Lon=<?php echo $long; ?>', null, function(resp){
        // resp will have the data from file2.php
        console.log(resp);
        console.log(resp['min_sec_array']);
        console.log(resp['main']);

        // here is where you will setup the graph 
        // with the data loaded
        <!--Plot function-->
    }, 'json');

});

</script>


 <div id=graph>
 </div>
 </body
 </html>
Run Code Online (Sandbox Code Playgroud)

文件2:file2.php我不确定你是否需要$ min_sec_array,但我有这个例子返回以及你之前使用的主要数据.

$lat = $_POST['Lat'];
$long = $_POST['Lon'];
$weather_hourly = simplexml_load_file('http:....lat='.$lat.'&lon='.$long.'');

//Pulling in hourly data to plot temp vs time
$i=0;
$main = array();
$array=array();
while ($i<=100)
{
    $main[] = array((strtotime($weather_hourly->data->{'time-layout'}->{'start-valid-time'}[$i])*1000), $weather_hourly->data->parameters->temperature->value[$i]);
    $value = $weather_hourly->data->parameters->temperature->value[$i];
    array_push($array,$value);
    $i++;
}
foreach ($array as $key => $value) 
{
    $min_sec_array[] = (string) $value;
}


echo json_encode(array(
    'min_sec_array' =>$min_sec_array,
    'main' => $main
));

exit();

?>
Run Code Online (Sandbox Code Playgroud)