2013-07-06 30 views
-3

我有一個PHP頁面,在加載時執行python腳本,一旦腳本執行後,顯示頁面的其餘部分,這是幾個div的集合..執行php exec()時顯示javascript加載圖標

<?php 

$str = exec('python -u read.py ' . $params, $output); 
$str; 

echo "welcome"; 
echo "<div id='div_1'>"; 
    echo "<div id = 'div_2'>"; 
    echo "you have finally landed, dude!"; 
    echo "</div>"; 
echo "</div>"; 

?> 

問題是,腳本需要8至9(或有時12)秒完全執行(通過exec()函數)..因此,我需要顯示一個JavaScript加載圖標爲長隨着腳本執行,然後在腳本完全執行後隱藏它。什麼是最簡單(而且最簡單)的方法來處理這個問題?謝謝。

+1

你將不得不使用'阿賈克斯()'它。 [在這裏閱讀文檔](http://api.jquery.com/jQuery.ajax/)。加載沒有相關內容的頁面,然後向PHP腳本發出異步調用。 –

+0

不是最優美的,但也許是最簡單的。顯示spinner gif,然後執行python腳本並將其緩存或將結果存儲在數據庫中。然後使用元標記重定向。如果緩存頁面將加載速度快,所以如果從緩存中提取,則不需要微調器。用戶也會喜歡每次加載頁面時不必等待python腳本。 – Matt

回答

2

加入這一行<img id="img" src="loader.gif" style="display:none;">保持這個形象與你的HTML早些時候,當你第一次加載頁面。

<img id="img" src="loader.gif"> 

然後用這個執行php腳本。

$(document).ready(function(){ 

    var url = "http://link_to_your_php_script"; 
    $.post(url, { /* You can have variable to post here */ }, function(data){ 
     if(data=="error"){ 
     alert("Error,page couldn't be loaded."); 
     } 
     else{ 
        $("#id").html(data); 
       } 

     }); 
    $("#img").hide(); //Hide the loading image. 

}); 

變化#id#'id of element where you want to place the <div>....</div>'

你不需要改變php腳本。你可以放在你的php腳本中。

echo "error"; 
exit; 

如果有錯誤。

一個更好的事情是在底部改變你的PHP來,

echo "welcome 
    <div id='div_1'> 
      <div id = 'div_2'> 
      you have finally landed, dude! 
    </div> 
    </div>"; 
exit; 
0
setTimeout(function(){  
    document.getElementById("div_1").style.display = "none"; 
    document.getElementById("loading").style.display = "block"; 
}, 1200); 

然後添加以下行

echo "<div id='loading'>Loding......</div>"; 

我希望這會幫助你,一切順利!

0

echo "<div id='div_1'>";

<!----------code to show loading image after submitting form, before the content is fully loaded---------------> 
<script> 
$(document).ready(function() { 

$("#form1").submit(function() { //you can assign id to your form and used that id instead of form 
$("#img").show(); 
$("#img").addClass("iimg"); 
$("div#div_1").hide(); 
return true; 
}); 

}); 
</script> 
<style> 
    .iimg{ 
     margin-top:150px; 
     height:15px; 
     width:140px; 
    } 
</style> 
<!--------------------------------------> 
+0

否。在'exec(...)'之前。 –