Как реализована функция голосовать, оставаясь на той же странице? (PHP/MySQL)

У меня есть реляционная база данных и система потоков/комментариев. У меня возникли проблемы с тем, чтобы придумать, как решить вопрос с голосованием, так как страницу необходимо обновить, чтобы сервер заметил какие-либо изменения.

Я создал новую таблицу UPVOTESTHREAD, которая состоит из двух внешних ключей, идентификатора пользователя и идентификатора потока, а также первичного ключа, представляющего собой их комбинацию. Единственный способ, которым я мог бы вставить это, - это отправить некоторые данные POST. Я боюсь, что это покажется пользователю неуклюжим, и это также будет означать, что пользователю придется прокручивать назад туда, где он только что смотрел. Это не может быть правильным решением, верно? Есть ли лучший способ сделать это?


person theupandup    schedule 24.11.2017    source источник
comment
Да, есть лучшее решение. Он называется AJAX. Он отправляет сообщение или получает запрос на сервер и получает вывод без перезагрузки страницы. Сценарий на сервере, который получает запрос ajax, может (в вашем случае) увеличивать счетчик голосов в файле db.   -  person kscherrer    schedule 24.11.2017
comment
В дополнение к тому, что сказал @Cashbee, он также может возвращать ответ, который вы можете использовать для обновления элемента DOM в своем представлении на лету, например, с помощью innerHTML, чтобы вы могли давать визуальную обратную связь без обновления.   -  person Robert Wade    schedule 24.11.2017
comment
Спасибо Кэшби. Для этого я рассмотрю реализацию AJAX. почти все старшие дизайн-проекты, которые дает нам наш отдел CS, требуют веб-разработки или мобильной разработки, и у нас нет доступных курсов разработки... так что я немного нуб.   -  person theupandup    schedule 24.11.2017


Ответы (1)


Да, есть лучшее решение. Он называется AJAX. Он отправляет сообщение или получает запрос на сервер и получает вывод без перезагрузки страницы.

Сценарий на сервере, который получает запрос ajax, может (в вашем случае) увеличивать счетчик голосов в файле db.

Сценарий (обычно PHP-) также может выводить что-то (обычно json или код состояния), которое получит обработчик успеха функции ajax. Затем вы можете соответствующим образом изменить свою страницу с помощью javascript. В вашем случае вы можете получить текущий подсчет голосов и обновить подсчет рядом с кнопкой upvote, если есть подсчет.

person kscherrer    schedule 24.11.2017