Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.06.2011, 18:31
Аспирант
Отправить личное сообщение для wfire Посмотреть профиль Найти все сообщения от wfire
 
Регистрация: 15.05.2011
Сообщений: 36

Индикатор загрузки данных из базы
Добрый день!
Такой вопрос: есть php-скрипт, который загружает обычным select-ом из базы mysql некие данные и выводит в html-табличку. Записей может быть несколько тысяч, и весь процесс занимает несколько секунд, в течение которых пользователь наблюдает только загруженный header страницы.
Возможно ли сделать при помощи jQuery индикатор (и если да, то как? ), который бы отображался на время загрузки данных из базы, не обязательно прогресс-бар, можно просто анимашку. Или для этого надо, чтобы данные из базы тоже грузились при помощи jQuery (Ajax)?
Ответить с цитированием
  #2 (permalink)  
Старый 18.06.2011, 18:43
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

php так не может. если отдаст данные, значит все

ставьте пустышку. будет выглядеть, будто прогресс идет)
Ответить с цитированием
  #3 (permalink)  
Старый 19.06.2011, 08:06
Аспирант
Отправить личное сообщение для wfire Посмотреть профиль Найти все сообщения от wfire
 
Регистрация: 15.05.2011
Сообщений: 36

Сообщение от melky
ставьте пустышку. будет выглядеть, будто прогресс идет)
Ну это не проблема, проблема в другом - как определять, когда данные загружены и "пустышку" нужно убирать? Ставить фиксированное время как-то некрасиво.
Ответить с цитированием
  #4 (permalink)  
Старый 19.06.2011, 08:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

делайте через AJAX, тогда узнаете, когда придут данные и когда надо убирать пустышку
Ответить с цитированием
  #5 (permalink)  
Старый 19.06.2011, 08:37
Аспирант
Отправить личное сообщение для wfire Посмотреть профиль Найти все сообщения от wfire
 
Регистрация: 15.05.2011
Сообщений: 36

Это вариант, но слишком много придется переделывать. А что, если сделать так: изначально выводить данные в скрытый div, например, а когда все загружено, показывать div и прятать пустышку? Только я не знаю, как определять момент окончания загрузки? Использовать событие onLoad дива?
Ответить с цитированием
  #6 (permalink)  
Старый 19.06.2011, 09:14
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

делайте как VK : когда запрос начался (данные только посланы), покажите красивую гифку, мол система загружает (хехе) А потом,как данные придут, это дело скрываете.

о господи. не знаете событие AJAX?

вы на чем пишите? нативный JS, или на JQuery, или другом фреймворке?
Ответить с цитированием
  #7 (permalink)  
Старый 19.06.2011, 09:30
Аспирант
Отправить личное сообщение для wfire Посмотреть профиль Найти все сообщения от wfire
 
Регистрация: 15.05.2011
Сообщений: 36

Пишу на РНР, при необходимости использую jQuery, но только готовые решения. Максимум могу немного адаптировать под свои нужды. Но написать что-то свое на JS или jQuery - увы...
Поэтому буду благодарен за пример практической реализации вышеописанного
Ответить с цитированием
  #8 (permalink)  
Старый 19.06.2011, 09:42
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 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 в 10:08.
Ответить с цитированием
  #9 (permalink)  
Старый 19.06.2011, 10:05
Аспирант
Отправить личное сообщение для wfire Посмотреть профиль Найти все сообщения от wfire
 
Регистрация: 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>&nbsp;</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, который представляет разметку страницы (шаблон).
Ответить с цитированием
  #10 (permalink)  
Старый 19.06.2011, 10:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 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"

        })
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите, как сделать индикатор «до начала загрузки страницы»? SergAG Элементы интерфейса 7 31.05.2011 18:53
После загрузки данных Ajaxom не работают скрипты simple AJAX и COMET 2 12.04.2011 07:21
Экспорт базы данных с сайта на мой реальный комп Golovastik Серверные языки и технологии 2 26.02.2011 20:46
Ajax и три <form> не работает. Как правильно сделать листание записей из базы данных? vlad275 AJAX и COMET 2 14.12.2009 13:04
Уважаемые веб-мастера! индикатор загрузки Poslushnik Общие вопросы Javascript 5 10.10.2009 23:14