Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
⊗jsPmDtFG 19 of 61 menu
Внимание! Репетиторство по Python! Осталось последнее место! Стоимость: 20$ за занятие 1.5 часа. Жми для подробностей!

Отправка форм методом GET через AJAX на PHP

Давайте теперь научимся отправлять HTML формы через AJAX без перезагрузки страницы. Начнем с самого простого варианта - отправки данных формы через метод GET.

Пусть у нас есть следующая форма для ввода двух чисел:

<form action="" method="GET" id="form"> <input type="text" name="num1"> <input type="text" name="num2"> <input type="submit"> </form>

Пусть после отправки формы мы хотим получить сумму введенных чисел:

<?php echo $_GET['num1'] + $_GET['num2']; ?>

Давайте отправим эту форму через AJAX. Для начала получим ссылку на форму в переменную:

let form = document.querySelector('#form');

Начнем с того, что запретим отправку формы "естественным" путем. Для этого навесим на форму (не на кнопку отправки) событие submit и в нем вызовем preventDefault:

form.addEventListener('submit', function(event) { event.preventDefault(); // отменим отправку формы });

Теперь попытка отправить форму не будет приводить ни к чему, в том числе и к перезагрузке страницы. Пол дела сделано. Осталось отправить нашу форму через AJAX.

Для этого получим данные из всех инпутов и отправим их GET параметрами адреса в функции fetch. Сделаем это.

Для начала получим наши инпуты в переменные:

form.addEventListener('submit', function(event) { let input1 = document.querySelector('[name="num1"]'); let input2 = document.querySelector('[name="num1"]'); event.preventDefault(); });

Будем осуществлять поиск инпутов не по всему документу, а внутри нашей формы:

form.addEventListener('submit', function(event) { let input1 = this.querySelector('[name="num1"]'); let input2 = this.querySelector('[name="num1"]'); event.preventDefault(); });

Давайте теперь получим данные наших инпутов:

form.addEventListener('submit', function(event) { let input1 = this.querySelector('[name="num1"]'); let input2 = this.querySelector('[name="num1"]'); let num1 = input1.value; let num2 = input2.value; event.preventDefault(); });

Отправим теперь эти данные через GET параметры:

form.addEventListener('submit', function(event) { let input1 = this.querySelector('[name="num1"]'); let input2 = this.querySelector('[name="num1"]'); let num1 = input1.value; let num2 = input2.value; let url = 'ajax.php?num1=' + num1 + '&num2=' + num2; let response = await fetch(url); let text = await response.text(); result.textContent = text; event.preventDefault(); });

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

Сделайте теперь так, чтобы форма отправлялась через AJAX.