18.06.2011, 19:31
|
Аспирант
|
|
Регистрация: 15.05.2011
Сообщений: 36
|
|
Индикатор загрузки данных из базы
Добрый день!
Такой вопрос: есть php-скрипт, который загружает обычным select-ом из базы mysql некие данные и выводит в html-табличку. Записей может быть несколько тысяч, и весь процесс занимает несколько секунд, в течение которых пользователь наблюдает только загруженный header страницы.
Возможно ли сделать при помощи jQuery индикатор (и если да, то как? ), который бы отображался на время загрузки данных из базы, не обязательно прогресс-бар, можно просто анимашку. Или для этого надо, чтобы данные из базы тоже грузились при помощи jQuery (Ajax)?
|
|
18.06.2011, 19:43
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
php так не может. если отдаст данные, значит все
ставьте пустышку. будет выглядеть, будто прогресс идет)
|
|
19.06.2011, 09:06
|
Аспирант
|
|
Регистрация: 15.05.2011
Сообщений: 36
|
|
Сообщение от melky
|
ставьте пустышку. будет выглядеть, будто прогресс идет)
|
Ну это не проблема, проблема в другом - как определять, когда данные загружены и "пустышку" нужно убирать? Ставить фиксированное время как-то некрасиво.
|
|
19.06.2011, 09:16
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
делайте через AJAX, тогда узнаете, когда придут данные и когда надо убирать пустышку
|
|
19.06.2011, 09:37
|
Аспирант
|
|
Регистрация: 15.05.2011
Сообщений: 36
|
|
Это вариант, но слишком много придется переделывать. А что, если сделать так: изначально выводить данные в скрытый div, например, а когда все загружено, показывать div и прятать пустышку? Только я не знаю, как определять момент окончания загрузки? Использовать событие onLoad дива?
|
|
19.06.2011, 10:14
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
делайте как VK : когда запрос начался (данные только посланы), покажите красивую гифку, мол система загружает (хехе) А потом,как данные придут, это дело скрываете.
о господи. не знаете событие AJAX?
вы на чем пишите? нативный JS, или на JQuery, или другом фреймворке?
|
|
19.06.2011, 10:30
|
Аспирант
|
|
Регистрация: 15.05.2011
Сообщений: 36
|
|
Пишу на РНР, при необходимости использую jQuery, но только готовые решения. Максимум могу немного адаптировать под свои нужды. Но написать что-то свое на JS или jQuery - увы...
Поэтому буду благодарен за пример практической реализации вышеописанного
|
|
19.06.2011, 10:42
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
не люблю jquery.
// надеюсь, вы элементы получать умеете :)
var GIF = $('.....');
$.ajax({
//поставьте false, если не надо кеширование, в противном случае уберите эту строчку
cache : true,
// данные,которые будут идти. если не отправляются, уберите эту строчку
data : { a : 'b', login : 'admin1234', password : 'фысивйвц845ч3' },
// перед отправкой показываем анимацию
beforeSend : function(xml){ GIF.show() },
// в любом случае скрывает анимацию
complete : function(){ GIF.hide() },
// обрабатывать ошибки надо. потом не понять, где загвоздка, когда что-нибудь сломатеся
error : function( xml, status, err ){ alert( 'ошибка' ) },
// выводим то,что пришло
success : function(data){ alert('Пришло : \n' + data) },
// время жизни запроса. на всякий.
timeout : 15 * 1000,
// URL запроса
url : ""
})
Последний раз редактировалось melky, 19.06.2011 в 11:08.
|
|
19.06.2011, 11:05
|
Аспирант
|
|
Регистрация: 15.05.2011
Сообщений: 36
|
|
var GIF = $('#div_id'); - сюда, как я понимаю, ставим id какого-нибудь дива с анимашкой, так?
data : { a : 'b', login : 'admin1234', password : 'фысивйвц845ч3' }, - вот это не понимаю...
И как это привязывается к конкретному процессу выборки данных из базы, тоже не понимаю.
На всякий случай, вот файл, который производит выборку:
<?php
// No direct access.
defined('_GB') or die;
$query = "SELECT id, num, abonent, prim FROM tel_int";
$result = mysql_query($query);
////////////////////// вывод в таблицу \\\\\\\\\\\\\\\\\\\\\\\\\\\\\
echo "<br /><table class='usertable'><thead><tr class='odd'><th> </th><th>Абонент</th><th>№ тел.</th><th>Примечание</th></tr>";
while($row = mysql_fetch_array($result)) {
echo "<tr><td>" . $row['id'] . "</td><td>" . $row['abonent'] . "</td><td>" . $row['num'] . "</td><td>" . $row['prim'] . "</td></tr>";
}
echo "</thead></table>"
?>
Этот файл инклюдится в файл index.php, который представляет разметку страницы (шаблон).
|
|
19.06.2011, 11:07
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
ну раз просто берутся данные из базы,тогда лучше так
// надеюсь, вы элементы получать умеете :)
var GIF = $('#div_id');
$.ajax({
// перед отправкой показываем анимацию
beforeSend : function(xml){ GIF.show() },
// в любом случае скрывает анимацию
complete : function(){ GIF.hide() },
// обрабатывать ошибки надо. потом не понять, где загвоздка, когда что-нибудь сломатеся
error : function( xml, status, err ){ alert( 'ошибка' ) },
// выводим то,что пришло
success : function(data){ alert('Пришло : \n' + data) },
// URL запроса
url : "http://google.ru"
})
|
|
|
|