Как я могу обновить страницу в режиме реального времени после получения POST-запроса на PHP?

#php

#php

Вопрос:

Мне нужно иметь PHP-страницу, которая может позволить одному человеку отправлять на нее POST-запрос с информацией, а затем каждый пользователь, у которого уже открыта страница, будет автоматически обновляться, чтобы отразить новую информацию в POST-запросе без обновления страницы.

У меня есть небольшой опыт работы с PHP, и я могу обрабатывать получение POST-запроса и чтение / запись в базу данных, мне просто нужно знать, как (если возможно) Я могу заставить этот PHP-скрипт отправлять эту новую информацию всем подключенным клиентам, не требуя от них обновления страницы.

Спасибо за любую информацию!

Комментарии:

1. Вам нужно использовать jquery и ajax . Если вам не нравятся эти два парня, тогда ваш единственный шанс — обновить страницу.

2. @Franco Я использую ajax с другой страницы для создания POST-запроса на эту страницу. Я не очень хорошо знаком с ajax, но если бы я мог указать правильное направление, я бы с удовольствием узнал, как это сделать.

3. Взгляните на w3schools.com/ajax прокрутите страницу вниз, и вы увидите, как она отправляет запросы на другую веб-страницу. Вы должны быть в состоянии найти свой путь оттуда.

4. Если вы ищете что-то вроде сокета. ввод-вывод для php, тогда могу ли я предложить ratchet

5. @Rawrskyes и ippi Благодарим вас за предложения, я обязательно их рассмотрю.

Ответ №1:

Хорошо, Аарон, я должен продолжить здесь, потому что в комментарии не так много места для объяснения этого.

Если вы уже используете ajax для отправки данных в базу данных, вы можете сделать это так:

на странице, которую вам нужно обновить, добавьте другое ajax request , чтобы извлечь опубликованные значения из базы данных и обернуть их в функцию, например:

 function get_post(){
    var Url = 'here the url that points to your php script'
    $.ajax({
        url: Url,
        type: 'POST',
        dataType: 'json',
        data: { //if needed you need to pass here the parameters },
    })
    .done(function(data) {
        //here assign the returned data to the html element
    })
    .fail(function() {
        console.log("error");
    });
}
  

после этого вам понадобится это, чтобы вызывать функцию с периодическими интервалами:

 setInterval(function(){
    get_post()         
},5000);
  

Это будет выполнять вышеупомянутую функцию каждые 5 секунд (отрегулируйте это значение в соответствии с вашими потребностями)
Страница будет обновляться без перезагрузки.

ПРИМЕЧАНИЕ: я не знаю, что вы храните и что собираетесь показывать, поэтому в зависимости от того, что вы планируете делать, вам нужно будет добавить дополнительный код в возвращаемый ответ, и, возможно, вам нужно будет предварительно отформатировать выводимый html непосредственно в вашем php скрипте, чтобы вы могли отобразить его вваша страница за один раз.

Я надеюсь, что это даст вам представление о том, как это сделать.

Комментарии:

1. Спасибо, это очень помогает. Я думаю, что смогу разобраться с этим.

2. Это вопрос к ответу, однако я хотел бы расширить вопрос: есть ли способ получить данные во внешнем интерфейсе, как только поступит запрос. Другими словами, что-то вроде вывода прерывания на микроконтроллере, который поднимет флаг для интерфейса (js), на основе которого запускается функция-обработчик?