Как сделать автообновление div в php
Перейти к содержимому

Как сделать автообновление div в php

  • автор:

Как реализовать автообновление div без перезагрузки страницы?

Здравствуйте, нужно реализовать автообновление определенного div без перезагрузки страницы. Нагуглил что можно сделать автообновление через jquery с помощью setInterval(), но так и не разобрался как сделать что-бы все заработало.

 
  • Вопрос задан более трёх лет назад
  • 297 просмотров

Реализация автообновления определенного DIV без перезагрузки страницы?

Здравствуйте, имеется некий div=fon2 на index.php.
Суть проста. Внутри див находится еще один PHP скрипт. Реализовать его автообновление через каждую минуту, не перезагружая полностью страницу.
То есть простыми словами, вы сидите смотрите в экран. И этот див сам обновился без вашей помощи. В интернете нашел много чего,но четкого ответа так никто и не дал. Нашел только автообновления всей страницы,но под определенный див он не работает. Если можно, подскажите как это сделать, желательно кодом или ярким примером. Спасибо.

  • Вопрос задан более трёх лет назад
  • 1291 просмотр

Комментировать
Решения вопроса 0
Ответы на вопрос 1

aliksend

Software Engineer

const updateDiv = () = < /* Делаем AJAX запрос. Если используется хоть что-то на клиенте, например jquery, можно написать проще */ var xhr = new XMLHttpRequest(); xhr.open('GET', 'updated_div.html', true); // эта страница выдаёт вёрстку нашего дива xhr.onreadystatechange =() => < if (xhr.readyState != 4) return; if (xhr.status != 200) < /* Запрос успешен, выводим в div */ document.getElementById('fon2').innerHtml = xhr.responseText >else < /* Ошибка запроса, обрабатываем в зависимости от ситуации */ alert(xhr.responseText); >setTimeout(updateDiv, 60000); // Ставим таймер на следующее обновление > xhr.send(); > // Вызвать для первого обновления div-а updateDiv();

На самом деле не совсем правильно передавать innerHtml, у вас же скорее всего не обновляется макет, только данные. Тогда можно было бы сделать ‘jsx для бедных’, вроде такого

getDivLayout = (data) => < return `'>$ `; >

и, соответственно, с сервера отправлять json, в onreadystatechange при успешном ответе его парсить и передавать в getDivLayout, результат которого уже вставлять в innerHtml div-а

Как сделать автоматическое обновление маркеров?

Здравствуйте! Необходимо, чтобы при добавлении в базу новых координат, на карте маркер выставлялся без обновление страницы. С Ajax ранее не работал (если он для этого), поэтому затрудняюсь реализовать, буду благодарен за помощь. Страница генерация маркера в базу (из документации гугла):

','>',$xmlStr); $xmlStr=str_replace('"','"',$xmlStr); $xmlStr=str_replace("'",''',$xmlStr); $xmlStr=str_replace("&",'&',$xmlStr); return $xmlStr; > $result = $pdo->query("SELECT * FROM markers WHERE 1"); header("Content-type: text/xml"); // Start XML file, echo parent node echo ''; // Iterate through the rows, printing XML nodes for each while ($row = $result->fetch())< // ADD TO XML DOCUMENT NODE echo ''; > // End XML file echo ''; 

Страница карты самой карты и маркеров:

    Los Santos Police Department - 911 Online Map     /* Allow the canvas to use the full height and have no margins */ html, body, #map-canvas         

SanMap это карта для игры, которая позволяет работать с игровой картой, а не нашей Земли.

Автообновление конкретного блока(div)

Здравствуйте, у меня на странице выводится некая информация, которая может быть обновлена(изменена), и необходимо каждые 5 секунд обновлять данный блок(другой вариант не придумал).

Вопрос как это сделать в шаблоне TWIG?

Раньше, при использовании шаблонов PHP, я просто отправлял POST запрос и в шаблоне прописывал данный код:

Но я не знаю как такое сделать в шаблоне TWIG, и может есть более хороший вариант.

  • Drupal8
  • Есть вопрос
  • Решение проблем
  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Комментарии

ivnish 13 ноября 2020 в 11:50

Лучше уж через ajax, я думаю

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Artalek 13 ноября 2020 в 11:53

вопрос в том как мне указать в шаблоне twig, откуда и до откуда он должен обновлять, т.е. ob_end_clean(); и exit();

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

bumble 13 ноября 2020 в 11:51

Раньше, при использовании шаблонов PHP, я просто отправлял POST запрос и в шаблоне прописывал данный код

Теперь, делайте нормально.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Artalek 13 ноября 2020 в 11:53

Есть конкретные мысли? я и хочу сделать нормально, но как?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

bumble 13 ноября 2020 в 11:56

Есть мысль посоветовать почитать литературу для новичков. Если готовы рассмотреть более конкретно — распишу.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Artalek 13 ноября 2020 в 12:14

Литературу на какую тему? Если будет полезная — то да

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

bumble 13 ноября 2020 в 12:28

Начните с этого:

  • Что такое шаблон
  • Контроллеры в Drupal
  • Как запросить данные на клиенте
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Artalek 16 ноября 2020 в 12:33

А как использовать Fetch с Drupal? Чтобы обновить к примеру блок div?
Нужно каждые 5 секунд выполнять запрос Fetch, и получить данный блок и потом его заменить просто?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

vlucas 16 ноября 2020 в 12:35

Оффтоп, просто интересно.
А что будет с кешированием?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

А каким образом fetch зависит от технологии, с которой его используют?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Artalek 16 ноября 2020 в 13:12

В том смысле, правильно ли я понял, что нужно сделать?

Нужно каждые 5 секунд выполнять запрос Fetch, и получить данный блок и потом его заменить просто?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

bumble 16 ноября 2020 в 13:40

Нужно каждые 5 секунд выполнять запрос Fetch, и получить данный блок и потом его заменить просто?

Надеюсь, знак вопроса там случайно.

Ок. Что нужно сделать, моя версия:
— добавить роут (контроллер, путь, страницу, точку доступа.. как хотите), который будет ответственен за выдачу нужных данных.
— написать скрипт, с логикой, для клиента (на Javascript), который будет делать запросы на этот роут, с нужным интервалом, и обновлять данные.

Использовать фетч, аякс, любую приглянувшуюся либку, которая под капотом сделает все за вас — уже дело вкуса.

Не вижу здесь никаких сложностей и необходимости что-либо изобретать. Хотя, если заморочится и фц-нал нужен в различных местах — можно сообразить свою аякс-командочку, как советовали ранее.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

vlucas 13 ноября 2020 в 12:27

Не надо делать это в шаблоне twig
Вы должны отловить событие изменения/добавления навесить на него свой обработчик в котором написать вашу аякс команду.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Реакции

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *