- Простой пример использования PHP и AJAX.
- Создание страницы
- Создание js скрипта
- Обработчик на php
- Как выполнить PHP скрипт через ajax?
- Войдите, чтобы написать ответ
- Как сделать так чтобы, при отправки ajax события в data: < art: >, выходила два input и между ними -?
- Отправка формы без перезагрузки страницы на PHP и Ajax
- HTML-код формы
- Отправка формы без перезагрузки страницы
- PHP обработчик
- Заключение
Простой пример использования PHP и AJAX.
В эпоху современного веба, большинство сайтов становятся все более интерактивными. Если ранее для получения обновленных данных нам нужно было обновить полностью страницу, то сейчас появились технологии которые позволяют полностью страницу не загружать, а только лишь отдельную ее часть. В свою очередь это предоставляет удобство как пользователям так и владельцам серверов, ведь для пользователя загрузка страницы будет быстрее, так как загружается только отдельная часть страницы, а серверу не нужно каждый раз генерировать страницу и отдавать ее пользователю. Эти возможности просто реализовать при помощи php и ajax.
Сегодня мы разберем небольшой пример для лучшего понимания работы концепции AJAX. Иногда новичкам бывает трудно понять каким же образом взаимодействует между собой php и ajax, много людей ищут примеры того как валидировать формы на лету без перезагрузки всей страницы. Я вам вкратце покажу как это делается, для того, чтобы вы могли понять основы и принципы которые позволят вам в будущем более быстро освоить другие инструменты и писать свои собственные скрипты.
Придумаем небольшое задание себе, будем проверять наличие email адреса в базе данных без перезагрузки страницы используя php и ajax. Такой пример хорошо продемонстрирует как мы можем взаимодействовать с сервером без перезагрузки страницы в браузере, а также, это часто используется при различного рода валидациях пользовательских форм. В корневом каталоге создадим 3 файла с именами index.php , email.php , validate.js .
Создание страницы
Создадим простую страницу с одной формой, которая содержит только одно поле для ввода email.
Синтаксис файла index.php
Самый простой способ работать с AJAX — это подключить фреймворк jQuery, что собственно я и сделал. jQuery предоставляет нам простой в понимании и работе синтаксис для отправки AJAX запросов, почему бы не использовать это преимущество?
Создание js скрипта
Синтаксис файла validate.js
$(document).ready(function()< var email = ''; $('#email').keyup(function()< var value = $(this).val(); $.ajax(< type:'POST', url:'email.php', data:'email='+value, success:function(msg)< if(msg == 'valid')< $('#message').html('Этот Email можно использовать.'); email = value; >else< $('#message').html('Этот Email уже занят.'); > > >); >); $('#submit').click(function()< if(email == '')< alert('Please, put data to all email'); >else < $.ajax(< type: 'POST', url:'email.php', data:'add_email='+email, success:function(msg)< $('#message').html(msg); >>); > >); >);
Обработчик на php
Этот скрипт будет получать POST запрос от клиента, обрабатывать его и возвращать результат. AJAX считывает результат и на его основе принимает решение.
Синтаксис файла email.php
$connection = mysqli_connect("localhost","email","email","email"); if(isset($_POST['email']) && $_POST['email'] != '')< $email = $_POST['email']; $email = mysqli_real_escape_string($connection,$email); if(!filter_var($email, FILTER_VALIDATE_EMAIL))< echo 'invalid'; >else< $sql = "SELECT id FROM email WHERE email='$email'"; $result = mysqli_query($connection,$sql); if(mysqli_num_rows($result) == 1)< echo 'invalid'; >else < echo 'valid'; >> > if(isset($_POST['add_email']) && $_POST['add_email'] != '')< $email = mysqli_real_escape_string($connection,$_POST['add_email']); $sql = "INSERT INTO email(email) VALUES('$email')"; if(mysqli_query($connection,$sql))< echo Success'; >else< echo 'Error'; > >
В нашем php скрипте, самый обычный код, который обрабатывает post запрос и печатает на странице определенный текст. В результате AJAX отправляет запрос php скрипту, скрипт его обрабатывает и выдает результат, AJAX считывает результат и изменяет страницу в реальном времени.
AJAX передает POST запрос скрипту посредством этого участка кода:
$.ajax(< type:'POST', url:'email.php', data:'email='+value, success:function(msg)< if(msg == 'valid')< $('#message').html('Этот Email можно использовать.'); email = value; >else< $('#message').html('Этот Email уже занят.'); > > >);
type — Тип запроса, POST или GET. В нашем случае POST;
url — адрес скрипта которому отправляют запрос;
data — данные которые передаются в запросе;
success — что делать в результате успешного выполнения запроса. В нашем случае вызывается функция;
В самом скрипте, проверка наличия email в базе выполняется при каждом вводе символа в поле email. В скрипте за обработку ввода отвечает участок $(‘#email’).keyup(function()<>); , который проверяет нажатие клавиши в поле с id = «email» .
Как видите, код довольно простой и не требует особо больших навыков для понимания, все завязано на обработке событий keyup() — нажатие клавиши , click() — клик мышкой по элементу . Далее следует AJAX запрос и ответ от скрипта. Таким образом используя php и ajax можно можно получить практически безграничные возможности для создания интерактивных страниц.
Данный код не претендует на звание высококачественного, но если развить, добавить правильных валидаций на уровне клиента и сервера, ввести css, то вполне можно использовать в своих проектах.
Если у вас возникли вопросы, не стесняйтесь, пишите комментарии.
Желаю вам хорошего дня и до скорых встреч 🙂
Файлы примеров.
Как выполнить PHP скрипт через ajax?
Советую лучше переключиться на PHP фреймворки, так писать свои костыли уже давно не надобно. Хотя ради изучения можно.
Но советую переходить на фреймворки, меньше запар, плюс изучишь ООП,а это тебя продвинет на несколько шагов перед.
//"file.php" - Это тот файл на который будем отправлять AJAX запрос $("#btn_yes").on('click', function() < $.post("file.php", < btn_yes: "btn_yes">) .done(function( data ) < alert( "Сообщение: " + data ); >); >); $("#btn_no").on('click', function() < $.post("file.php", < btn_no: "btn_no">) .done(function( data ) < alert( "Сообщение: " + data ); >); >);
Код файла «file.php» (можете заменить на свой):
if( isset( $_POST['btn_yes'] )) < echo 'Отправлена кнопка btn_yes'; >if( isset( $_POST['btn_no'] ))
Все достаточно просто. PHP такой язык, что код в нем выполняется всякий раз, когда мы открывает страницу. Иными словами, для того чтобы выполнился код в некой условном файле test.php достаточно открыть его (скачать). На JavaScript для этого можно использовать fetch. Просто сделайте запрос по адресу вашего скрипта через fetch:
https://learn.javascript.ru/fetch
Войдите, чтобы написать ответ
Как сделать так чтобы, при отправки ajax события в data: < art: >, выходила два input и между ними -?
Отправка формы без перезагрузки страницы на PHP и Ajax
Постоянно приходится пользоваться этой заготовкой. Вы можете модернизировать ее под любые нужды, будь то форма обратной связи, форма обратного звонка или заказ какой-либо услуги или товара.
Поэтому я не буду украшать ее стилями, применять классы Bootstrap и различные скрипты, как например маска телефона. Это вы сможете сделать при необходимости в зависимости от задачи.
Используя только одно включение кода из этого примера, можно создать неограниченное количество различных форм на странице. Это будет актуально, например для сайтов лендингов, где на одной странице используется множество различных форм.
HTML-код формы
Для начала создадим саму форму на HTML. Для примера будем использовать только 3 поля: имя, телефон и сообщение.
Один важный момент: у тега обязательно должен быть id. Если на странице будут использоваться несколько форм, то id соответственно должны быть различные.
Зачем это нужно? Именно по этому идентификатору скрипт и будет отличать отправленную форму от других. И при этом не возникнет необходимости делать несколько включений одного и того же JavaScript кода. Но тут опять же все индивидуально и вы можете переделать код как вам удобно.
В форме используем атрибут type в зависимости от типа поля. Это даст дополнительное преимущество при проверке вводимых данных. Чаще всего приходится использовать такие поля как:
Подборка бесплатных IT-курсов и вебинаров от Skillbox.
Бесплатные IT-курсы, нужно только пройти онлайн-тест здесь
Так же на данный момент для полей существуют различные атрибуты, которые избавят от лишних проверок на JavaScript. В этом примере используется атрибут required устанавливающий поле обязательным. А вот например в атрибуте pattern можно указать регулярное выражение для проверки маски ввода. Но я все же для этих целей использую соответствующий плагин jQuery.
Отправка формы без перезагрузки страницы
Тут самое интересное. Но как всегда на самом деле все просто. Приведенный ниже код можно подключить в отдельном .js скрипте или прямо в теле страницы перед закрывающим тегом