在大多數情況下,您將有兩個頁面。第一頁,客戶端,打電話給另一頁,服務器端,並顯示一個漂亮的旋轉的東西,而它等待。當服務器端頁面完成加載時(當您的查詢完成時),您的第一頁會收到回覆,然後您可以隱藏漂亮的旋轉內容,讓用戶知道它已完成。
您可以使用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
?>
該查詢看起來不像應該帶*任何*時間,真的。這就是它的全部嗎? –
大約需要3-4秒。 – Lmxc
查詢一行?這聽起來不對。 –