@exgod
Трудно быть Богом.

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

Добрый вечер!
На сайте есть посты, которые я получаю из БД. Вся суть в том, что я реализовал получение контента следующим образом:
1. Пользователь добавляет запись.
2. Она сразу же появляется на сайте.
Действия выше я реализовал путём:
function showPopularPosts() {
                $.ajax({
                    type: 'post',
                    url: "/getpopularpost.php",
                    cache: false,
                    response: 'text',
                    success: function(html) {
                        $("#getPopularPosts").html(html);
                    }
                });
            }
     


        $(document).ready(function(){
            showPopularPosts();

            setInterval('showPopularPosts()',1000);
            
        });

Записи вытаскиваю из файла getpopularpost.php, но есть один нюанс: каждый пост содержит следующий функционал:
1. Мне нравится
2. Мне не нравится
3. Просмотры
3. В закладки
Реализовал функцию "Мне нравится" и вся беда в том, что из-за того что контент обновляется каждую секунду, "мне нравится" не работает, но если убрать функцию setInterval('showPopularPosts()',1000);, то всё работает, только чтобы увидеть пост, необходимо обновить страницу.

Подскажите, пожалуйста, каким образом получая контент я могу задействовать функцию "мне нравится".
В голову вообще ничего не лезет.
  • Вопрос задан
  • 783 просмотра
Решения вопроса 1
erniesto77
@erniesto77
oop, rb, py, php, js
все не правильно

создаем сущность события (Event). Добавляем в базу допустим событие "Добавлен новый лайк" и через сокет слушаем эти события на бэкенде (socket.io, pusher.com или свой сервер)

на практике создаем модель Event + связи Event.User, Event.Project допустим. У каждого Event будет поле listener допустим 'click'. На клиенте добавляем listener для каждого события и если событие сработало пушим уведомление на бэкенд, на бэке обновлем базу и пушим уведомление на клиент типа сработало событие "Добавлен новый лайк" в браузере отображаем событие
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Меняйте не разметку, а свойства статической разметки.
Ответ написан
@sidni
Php Developer
А в чем смысл функционала "мне нравится". По логике вещей своим аяксовым запросом, вы не только посты должны обновлять, а так же все динамические зависимости связанные с постами в том числе и мне нравится
UPD и секунда это реально мало, если на сайт придет человек 50 они вам сервак покладут
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы