• JavaScript
  • AJAX
  • PHP

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

Здравствуйте. Мне нужно на сайте разместить голосование/опрос. Как это сделать? Смотрел множество способов, в том числе через AJAX. Но почему-то возникают различные проблемы, то варианты пропадают, то нет результатов.

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

Александр Мальцев
Александр Мальцев

Здравствуйте! А какой нужно? С базой данных или без неё? Могут все голосовать или только авторизованные пользователи? Серверная сторона должна быть на PHP или на чём-то другом?

dsad23
dsad23

Здравствуйте, без базы данных и чтобы все могли голосовать.

Александр Мальцев
Александр Мальцев

Добрый день! Так уже имеется голосовалка для сайта. Что-то не получается?

dsad23
dsad23

Здравствуйте, да, не получается, сделал всё по инструкции, но после нажатия кнопки голосовать, опросник просто испаряется. Могу залить файлы, которые я подстроил под свой сайт на яндекс диск, чтобы вы подсказали из-за чего это ?

Александр Мальцев
Александр Мальцев

Доброе утро! Сделайте, посмотрю что не так.

dsad23
dsad23

https://disk.yandex.ru/d/m9mCLexwR5Yqbw

Александр Мальцев
Александр Мальцев

А что не работает? Зачем вы добавили атрибут async для <sсript>? В данном случае его нужно удалить:

<script src="https://sovetkino.com/js2/jquery-3.6.4.min.js"></script>
<script src="https://sovetkino.com/js2/bootstrap.min.js"></script>

После удаления всё работает.

Если нужно загрузить скрипты для работы с DOM асинхронно, то нужно их расположить в <head> и добавить к ним атрибут defer. Код, расположенный между <script> в данном случае нужно выполнить после загрузки страницы (DOMContentLoaded):

<head>
<!-- ... -->
<script src="https://sovetkino.com/js2/jquery-3.6.4.min.js" defer></script>
<script src="https://sovetkino.com/js2/bootstrap.min.js" defer></script>

<script>
document.addEventListener('DOMContentLoaded', () => {
  // ...
});
</script>
dsad23
dsad23

Здравствуйте ,загрузил файлы, но вот так Описание картинкиОписание картинки

Александр Мальцев
Александр Мальцев

При использовании defer, код, который расположен непосредственно между script нужно расположить в обработчике события DOMContentLoaded (вместо ...):

<script>
document.addEventListener('DOMContentLoaded', () => {
  ...
});
</script>

А веб-сервер с поддержкой PHP установлен?

dsad23
dsad23

установлен, а насчёт "defer, код, который расположен непосредственно между script нужно расположить в обработчике события DOMContentLoaded (вместо ...)" не совсем если честно понял

Александр Мальцев
Александр Мальцев

У меня так работает: https://disk.yandex.ru/d/fLKP0O8gx08_cg

dsad23
dsad23

Загрузил ваши файлы и заработало, благодарю, однако после обновления страницы данные не сохраняются. Я так понимаю данные должны записываться в poll.results, но это не происходит. Из-за чего это может быть ?

Александр Мальцев
Александр Мальцев

Данные сохраняются в файл poll-results.txt. Чтобы они туда записывались должен быть доступ на запись в этот файл.

dsad23
dsad23

Благодарю, всё работает. Только еще один вопрос, а как обнулить куки ?

Александр Мальцев
Александр Мальцев

В Chrome: "Инструменты разработчика" (Ctrl + Shift + I) => вкладка "Application" => в левой панели "Cookies".