<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Как сделать динамическое добавление комментариев, используя Ajax.

Как сделать динамическое добавление комментариев, используя Ajax.

Всем привет! В этой статье я хочу рассказать вам, как сделать добавление комментариев через Ajax.

Наша система будет очень простой, чтобы показать суть, а дальше вы сможете сами все улучшить как нужно именно вам.

Для начала создайте файл index.html в корне сайта. Создайте папку libs, а в ней файл add_comment.php

Откроем файл index.html и создадим там простую форму.

<form action="" method="post">
  <span>Имя: </span><br>
  <input type="text" id="name"><br>
  <span>Комментарий</span><br>
  <textarea id="comment" cols="30" rows="10"></textarea><br>
  <button id="button">Отправить</button>
</form>

Теперь создайте базу данных, у меня она называется comments. Создайте там табличку

CREATE TABLE IF NOT EXISTS `comm` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `comment` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=36 ;

Теперь откроем файл add_comment.php и пропишем следующее

<?php
  $name = $_POST['name'];
  $comment = $_POST['comment'];
  $mysqli = new Mysqli('localhost', 'root', '', 'comments');
  $mysqli->query("SET NAMES utf8");
  $mysqli->query("INSERT INTO `comm`(`name`, `comment`) VALUES('$name', '$comment')");
?>

Думаю, тут все понятно. Получаем данные из массива post, записываем их в переменные, подключаемся к базе данных, отправляем запрос на установление кодировки, отправляем запрос на добавление комментария.

Теперь переходим к самому интересному - javascript. Сразу после формы пишем следующее:

<script>
  var button = document.getElementById('button'),
      xmlhttp = new XMLHttpRequest();
  button.addEventListener('click', function() {
   var name = document.getElementById('name').value.replace(/<[^>]+>/g,''),
       comment = document.getElementById('comment').value.replace(/<[^>]+>/g,'');
   if(name === '' || comment === '') {
    alert('Заполните все поля!');
    return false;
   }
   xmlhttp.open('post', 'libs/add_comment.php', true);
   xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   xmlhttp.send("name=" + encodeURIComponent(name) + "&comment=" + encodeURIComponent(comment));
  });
</script>

Вот такой небольшой кусочек кода нужен для решения этой задачи. Что мы тут сделали? Давайте разберемся.

Сначала мы находим кнопку и вешаем на нее обработчик события, который при клике вызывает анонимную функцию. В анонимной функции мы получаем значения имени и комментария и сразу же убираем там все html теги. Теперь проверяем, если хотя бы одно из полей является пустым, пишем об этом автору комментария и останавливаем скрипт. Если все нормально, то подключаемся к php файлу, отправляем заголовки с кодировкой и затем отправляем имя пользователя и текст его сообщения, кодируя русские символы.

Все, теперь вы можете ввести свой комментарий, нажать кнопку отправить, и он появится в базе данных без перезагрузки страницы.

На этом я заканчиваю эту статью, а в следующей мы разберем, как динамически подгружать комментарии. Эта задача также довольно нетрудная.

Итак, спасибо за внимание и удачи!

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (7):

pirogin pirogin 12.08.2014 19:33:22

А должно ли это работать на Denwer`е? Скопировал, создал таблицу, изменил название базы, не работает. Просто не подключается php файл, как я понимаю.

Ответить

php_programmer php_programmer 12.08.2014 21:04:48

Конечно, должно! Если вы поменяли название базы, то не забудьте изменить ее название и в php файле. Также не забудьте проверить, где находится php файл. Он должен быть в папке libs и называться add_comment.php Если вы поменяли название файла или его путь, то поменяйте соответствующую строчку в JavaScript.

Ответить

shokin shokin 01.07.2015 09:18:40

Не работает. Сделал как написано. Пользуюсь FireFox, при нажатии кнопки, если поля пустые появляется сообщения, если поля не пустые то просто перегружает страницу. JavaScript ничего не пытается отправить. Сообщений ошибок нет. Поэкспериментировал, обнаружил странное поведение JavaScript, если в конце кода JavaScript добавить просто пустой alert(); , скрипт работает, оправляет на сервер данные и происходит запись в БД, я так понимаю в коде что то не хватает для нормального запуска JavaScript в FireFox, alert как то активарует скрипт. Что может быть? Попробовал другим браузером Expiorer, JavaScript отрабатывает без alert(); в конце.

Ответить

EgorFamin EgorFamin 21.10.2015 15:36:41

Работает не стабильно, как исправить? Кто нибудь подскажите.

Ответить

comment comment 22.10.2015 12:54:19

У меня почему то айди равен 36 зачем столько ?

Ответить

Lodjn Lodjn 03.08.2016 14:21:24

После отправки данных возникает ошибка Cannot POST /Index.html. Что не так мог сделать? Проверил все как в уроке.

Ответить

vpsev vpsev 31.08.2016 15:22:16

Обязателен alert в конце скрипта, как указано у SHOKIN выше. После первого вызова этого самого alert-a, при последующих вызовах ajax, alert уже не нужен. И что бы это могло быть?

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.