С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35

Периодический запрос данных из бд через ajax

03.06.2014, 01:42. Показов 6522. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброй ночи! Помогите разобраться и решить проблему.

Необходимо при загрузке страницы через ajax (т.е. без ее обновления) каждые 15 сек. делать выборку из базы по значению, например Name. Если значение есть, то рефрешнуть страницу.

Гуглил, но нашел примеры только с событием, типа инпут, которое мне не подходит.
За ранее спасибо за помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2014, 01:42
Ответы с готовыми решениями:

Как узнать на стороне сервера, какой тип данных передан через ajax запрос
Здравствуйте друзья и снова к вам с просторов поисковиков. В общем у меня такая задача. Я посылаю со стороны клиента ajax две картинки,...

Простой запрос через AJAX
Помогите сделать задачку. С AJAX вообще разобраться не получается( Технология AJAX. Объект XMLHttpRequest. С использованием Ajax написать...

Передача данных через Ajax-запрос
Не могу понять, как правильно передавать и принимать несколько переменных через Ajax-запрос.. С одной всё работает отлично. Очень прошу...

20
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
03.06.2014, 12:08
Цитата Сообщение от VTrial Посмотреть сообщение
каждые 15 сек
Гуглите "javascript timer"
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35
03.06.2014, 13:51  [ТС]
Таймер у меня есть, но как им обработать выборку из БД, я не знаю.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
03.06.2014, 14:03
Ну так на таймер вешаем аякс, чтобы дергался скрипт ajax.php там делаем выборку...
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35
03.06.2014, 14:26  [ТС]
Цитата Сообщение от crautcher Посмотреть сообщение
на таймер вешаем аякс
как вот это сделать?
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
03.06.2014, 15:00
jquery есть или на нативном js работаете?
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35
03.06.2014, 15:03  [ТС]
jquery-1.10.2.min.js
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
03.06.2014, 15:15
Цитата Сообщение от VTrial Посмотреть сообщение
делать выборку из базы по значению, например Name
Ну создаем функцию которая шлет ajax запрос файлу и если получает в ответ 1, перегружаем страницу. Вешает ее на таймер и делаем php документ, который делает выборку и выводит на экран 1, если (ваше условие).
JavaScript
1
2
3
4
5
6
7
8
9
function AjaxViborka(){
    $.ajax({
       url: "path/to/ajax/file.php",
       type: "POST",
       data: { Name : 'Имя, которое проверить надо' },
   }).done(function(otvet_php) {
         if (otvet_php == 1) {  location.reload();  }
   });
}
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35
03.06.2014, 16:53  [ТС]
Сделал так:
в index.php повесил
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var AjaxViborkaTimeout = 1500;
function AjaxViborka(){
    $.ajax({
       url: "path/to/js/ajax.php",
       type: "POST",
       data: { chall : '<?php echo $ajax_ch ?>' },
   }).done(function(otvet_php) {
         if (otvet_php == 1) {  location.reload();  }
   });
   
   setTimeout(AjaxViborka,AjaxViborkaTimeout);
}
 
// call to run only once
AjaxViborka();
Сам файл ajax.php
PHP
1
2
3
4
5
6
7
8
9
10
include_once('../cfg/db.php');
$q = mysql_query("SELECT chall FROM `users` where login='логин юзера'");
for ($n=0; $n<mysql_num_rows($q);$n++)
         {
         $ID_counter++;
        $row4 = @mysql_fetch_array($q);
        $j=$n+1;
$ajax_ch = $row4['chall'];
echo "$ajax_ch";
}
В итоге ложит серв

Добавлено через 3 минуты
Вот, если $ajax_ch пустая, то не делаем ничего, а если есть - обновляем страницу.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
03.06.2014, 17:07
Ну вы дедосер, хаккер вредитель
JavaScript
1
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
var AjaxViborkaTimeout = 1500;
function AjaxViborka(){
    document.write('1');
   setTimeout(AjaxViborka,AjaxViborkaTimeout);
}
 
// call to run only once
AjaxViborka();
</script>
Посмотрите на скорость появления единиц на экране, это разве 15 секунд?))
Если значение есть, то рефрешнуть страницу.
Зачем это все? Или я не понял формулировки.
Цитата Сообщение от VTrial Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
for ($n=0; $n<mysql_num_rows($q);$n++)
* * * * *{
* * * * *$ID_counter++;
* * * * $row4 = @mysql_fetch_array($q);
* * * * $j=$n+1;
$ajax_ch = $row4['chall'];
echo "$ajax_ch";
}
Добавлено через 3 минуты
Другой момент, что аякс асинхронен и он запускает setTimeout сразу после запроса. Нужно наверное его запустить, когда получим ответ, а не сразу. Также нужно убить скрипт, если он получил ошибку от пхп, чтоб не досить далее.
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35
03.06.2014, 17:11  [ТС]
Цитата Сообщение от crautcher Посмотреть сообщение
Другой момент, что аякс асинхронен и он запускает setTimeout сразу после запроса. Нужно наверное его запустить, когда получим ответ, а не сразу. Также нужно убить скрипт, если он получил ошибку от пхп, чтоб не досить далее.
Он должен стартовать сразу при загрузке страницы и искать значение, если нашел - обновил страницу.
Далее идет проверка на значение в самом пхп и скрипт не будет уже запускаться.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
03.06.2014, 17:21
login в запросе аякс обработчика вы из сессии берете?
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35
03.06.2014, 17:22  [ТС]
Да...
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
03.06.2014, 17:33
Цитата Сообщение от VTrial Посмотреть сообщение
JavaScript
1
data: { chall : '<?php echo $ajax_ch ?>' },
Тогда нам слать впринципе ничего не нужно, а если не слать то страницу можно открыть гетом и рефрешить. Давайте сделаем так... аякс обработчик будет универсальный и в следующий раз вам не нужно будет новый файл клипать. Js будет отправлять по аяксу название функции, результат которой нужно получить.
PHP
1
2
3
4
5
6
7
8
 $.ajax({
       url: "path/to/js/ajax.php",
       type: "POST",
       data: { UseFunction : 'IsChall' },
   }).done(function(otvet_php) {
         if (otvet_php == 1) {  location.reload();  }
         setTimeout(AjaxViborka,AjaxViborkaTimeout);
   });
В пхп мы проверяем, если пост данные с названием функции и функция, если нет - досвидание.
PHP
1
2
3
4
5
6
7
8
9
<?
#main code
header('Content-Type: text/html; charset=utf-8');
if (empty($_POST['UseFunction'])) exit(0);
$function = 'Run' . $_POST['UseFunction'];
if (!function_exists($function)) exit(0);
$function();
 
#modules:
И далее пишем модуль выборки данных
PHP
1
2
3
4
5
6
7
function RunIsChall(){
   include_once('../cfg/db.php');
   $q = mysql_query("SELECT count(*) as `Cnt` FROM `users` where login='логин юзера' limit 1");
   $q = mysql_fetch_assoc($q);
   echo $q['Cnt'];
   exit(0);
}
1
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35
04.06.2014, 13:11  [ТС]
Добавлено через 18 часов 30 минут
Поднимаю тему, опять возникла проблема!
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function checkChall(){
 
    $.ajax({
       url: "/js/ajax.php",
   }).done(function(otvet_php) {
        console.log(otvet_php);
         if (otvet_php) {
         location.reload(); 
            }
   });
 setTimeout(checkChall,15000);
}
 
// call to run only once
checkFight();
Через этот скрипт работает, но он обновляет страницу, даже, если жмешь на любой инпут сабмит.
Такое впечатление, что он проверяет каждую сек. на значение из БД, а не раз в 15 сек.
В чем может быть загвоздка и как мне убрать рефреш на инпуты?
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
04.06.2014, 15:55
Цитата Сообщение от VTrial Посмотреть сообщение
он обновляет страницу, даже, если жмешь на любой инпут сабмит.
Ну при нажатии на инпут сабмит и должны данные отправится с рефрешем страницы. Почему должно быть иначе?
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35
04.06.2014, 16:01  [ТС]
Потому, что из этого рефреша у меня рвет сессию. Мне не нужно, чтобы рефрешило по инпутам.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
04.06.2014, 16:04
Ничего не понял. Можно детальнее?
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 35
04.06.2014, 16:06  [ТС]
Понимаю, что не видя все картины объяснить сложно.
Нужно, чтобы вот этот код:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function checkChall(){
 
    $.ajax({
       url: "/js/ajax.php",
   }).done(function(otvet_php) {
        console.log(otvet_php);
         if (otvet_php) {
         location.reload(); 
            }
   });
 setTimeout(checkChall,15000);
}
 
// call to run only once
checkFight();
Не обновлял страницы по нажатию на input, а работал только по таймеру, каждые 15 сек.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
04.06.2014, 16:13
вот этот код Не обновлял страницы по нажатию на input
Так и есть. Этот код не обновляет страницу по нажатию на инпут. Его обновляет само нажатие. Этот код вообще не причем и никак не связан с инпутами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2014, 16:13
Помогаю со студенческими работами здесь

Получение данных из сессии через ajax запрос
Здравствуйте, делаю корзину покупок при помощи get запроса почти работает но не как не могу вернуть данные с сессии в ajax чтобы...

Ajax запрос через прокси!
Всем доброго времени суток! На сайте использую скрипт, который выполняет Ajax запрос вида: result =...

Подмена модели через ajax-запрос
Добрый день! Есть представление для редактирования прав доступа юзеров: &lt;div class=&quot;form-group&quot;&gt; ...

Не проходит post запрос через ajax
Здравствуйте, делаю загрузку аватара. Всё работало, решил сделать через popup окно с помощью js и ajax. Всё почти работает, php не ловит...

запрос 1с 7.7 периодический справочник
ТекстЗапроса = &quot; |SELECT $ПоследнееЗначение.Цены.Цена(Цены.ID, :ВыбДата) Цена | , $Цены.Артикул | , Цены.ID |FROM...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru