2013-09-21 26 views
1

我想在php腳本執行時顯示加載圖像。我已經閱讀了如何做到這一點的不同答案,但大多數人都表示我應該有一個單獨的PHP頁面。但是,我使用單個頁面來顯示行,所以我如何能夠顯示加載圖像?在執行PHP時顯示加載圖像

選擇查詢的例子,我使用來獲取數據:

$stmt = $mydb->prepare("select * from table where firstname = ? and id = ? "); 
$stmt->bind_param('ss', $firstname, $id); 
$stmt->execute(); 
$stmt->close(); 
+1

該查詢看起來不像應該帶*任何*時間,真的。這就是它的全部嗎? –

+0

大約需要3-4秒。 – Lmxc

+1

查詢一行?這聽起來不對。 –

回答

7

在大多數情況下,您有兩個頁面。第一頁,客戶端,打電話給另一頁,服務器端,並顯示一個漂亮的旋轉的東西,而它等待。當服務器端頁面完成加載時(當您的查詢完成時),您的第一頁會收到回覆,然後您可以隱藏漂亮的旋轉內容,讓用戶知道它已完成。

您可以使用AJAX - 純Javascript或更簡單的jQuery - 從PHP頁面動態加載一些數據,並在它等待時顯示旋轉的東西。我在這裏使用jQuery。

CSS

#loading_spinner { display:none; } 

HTML

<img id="loading_spinner" src="loading-spinner.gif"> 

<div class="my_update_panel"></div> 

jQuery的

$('#loading_spinner').show(); 

var post_data = "my_variable="+my_variable; 
$.ajax({ 
    url: 'ajax/my_php_page.php', 
    type: 'POST', 
    data: post_data, 
    dataType: 'html', 
    success: function(data) { 
     $('.my_update_panel').html(data); 
//Moved the hide event so it waits to run until the prior event completes 
//It hide the spinner immediately, without waiting, until I moved it here 
     $('#loading_spinner').hide(); 
    }, 
    error: function() { 
     alert("Something went wrong!"); 
    } 
}); 

PHP(my_php_page.php)

<?php 
// if this page was not called by AJAX, die 
if (!$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') die('Invalid request'); 

// get variable sent from client-side page 
$my_variable = isset($_POST['my_variable']) ? strip_tags($_POST['my_variable']) :null; 

//run some queries, printing some kind of result 
$SQL = "SELECT * FROM myTable"; 
// echo results 
?> 
1

你不能真正做到這一點在PHP本身,你必須做在JavaScript的東西這一點。所以你可能想要做的是讓JQuery展示一個加載微調器,然後對你的PHP作業執行一個AJAX請求,當你得到數據時,隱藏加載指示器。

+0

好的。我會盡力做到這一點。 – Lmxc

+0

這是不完全正確的,它應該可能與PHP只使用漸進渲染(分塊編碼)。但它不是被推薦的東西。 –