Как реализовать автообновление div без перезагрузки страницы?
Здравствуйте, нужно реализовать автообновление определенного div без перезагрузки страницы. Нагуглил что можно сделать автообновление через jquery с помощью setInterval(), но так и не разобрался как сделать что-бы все заработало.
- Вопрос задан более трёх лет назад
- 297 просмотров
Реализация автообновления определенного DIV без перезагрузки страницы?
Здравствуйте, имеется некий div=fon2 на index.php.
Суть проста. Внутри див находится еще один PHP скрипт. Реализовать его автообновление через каждую минуту, не перезагружая полностью страницу.
То есть простыми словами, вы сидите смотрите в экран. И этот див сам обновился без вашей помощи. В интернете нашел много чего,но четкого ответа так никто и не дал. Нашел только автообновления всей страницы,но под определенный див он не работает. Если можно, подскажите как это сделать, желательно кодом или ярким примером. Спасибо.
- Вопрос задан более трёх лет назад
- 1291 просмотр
Комментировать
Решения вопроса 0
Ответы на вопрос 1

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
Вы должны отловить событие изменения/добавления навесить на него свой обработчик в котором написать вашу аякс команду.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
- Реакции