PHP - AJAX и PHP
AJAX (асинхронный JavaScript и XML) — это технология, используемая для обмена данными с сервером без обновления всей страницы.
AJAX — это технология, позволяющая обновлять части веб-страницы без необходимости перезагружать всю страницу. Она обменивается данными с сервером в фоновом режиме и может обновлять часть содержимого веб-страницы.
AJAX позволяет веб-страницам динамически обновлять части содержимого, обеспечивая более быстрый пользовательский опыт.
AJAX обычно использует объект XMLHttpRequest для связи с сервером в фоновом режиме, хотя также может использовать современные методы, такие как fetch API.
Для получения дополнительной информации можно обратиться к:Учебник по AJAX
Как работает AJAX
- Отправить запрос: Пользователь каким-либо образом инициирует AJAX-запрос (например, нажав кнопку).
- Создать запрос: JavaScript создаёт объект XMLHttpRequest для связи с сервером.
- Отправка запроса: Отправить запрос на сервер через объект XMLHttpRequest.
- Обработка на сервере: После получения запроса сервер обрабатывает данные.
- Возврат ответа: Сервер возвращает результат обработки клиенту.
- Обновление страницы: После того как JavaScript получает ответ сервера, он обновляет соответствующую часть веб-страницы.
Шаги по использованию AJAX в PHP
1. Фронтенд:JavaScript инициирует AJAX-запрос.
Используйте XMLHttpRequest или fetch для отправки запроса на сервер PHP.
2. Бэкенд:PHP получает и обрабатывает запрос.
PHP получает данные из AJAX-запроса и возвращает результат.
3. Фронтенд:Обработайте данные, возвращённые PHP.
Используйте JavaScript для разбора и отображения данных ответа, полученных от PHP.

Использование AJAX в PHP
1. Создайте HTML и JavaScript: Сначала вам нужна HTML-страница и код JavaScript для отправки AJAX-запросов.
Пример
<html>
<head>
<meta charset="UTF-8">
<title>Пример AJAX</title>
<script>
function sendRequest() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById("result").innerHTML = xhr.responseText;
}
};
xhr.open("GET", "your_php_file.php?param=value", true);
xhr.send();
}
</script>
</head>
<body>
<button onclick="sendRequest()">Отправить AJAX-запрос</button>
<div id="result"></div>
</body>
</html>
2. Напишите PHP-скрипт:На стороне сервера вам нужен PHP-файл для обработки запроса и возврата данных.
Пример
if (isset($_GET['param'])) {
// Обработка параметров запроса
$param = $_GET['param'];
// Выполнить некоторые операции...
// Вернуть ответ
echo "Получен параметр: " . $param;
}
?>
3. Отправка запроса:Когда пользователь нажимает кнопку, вызывается функция JavaScript sendRequest. Она создаёт объект XMLHttpRequest и отправляет запрос на сервер.
4. Обработка ответа:После того как сервер обрабатывает запрос, он возвращает результат клиенту. Клиентский код JavaScript проверяет статус ответа и обновляет содержимое страницы, когда статус равен 200 (то есть запрос выполнен успешно).
Пример AJAX PHP
Следующий пример демонстрирует, как веб-страница взаимодействует с веб-сервером, когда пользователь вводит символы в поле ввода:
Пример
Попробуйте ввести имя в поле ввода, например: Anna:
Возвращаемое значение:
Пояснение к примеру - HTML-страница
Когда пользователь вводит символы в поле ввода выше, выполняется функция "showHint()". Эта функция запускается событием "onkeyup":
Пример
<head>
<script>
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
// Код, выполняемый браузерами IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// Код, выполняемый браузерами IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<p><b>Введите имя в поле ввода:</b></p>
<форма>
Имя:<input type="text" onkeyup="showHint(this.value)">
</форма>
<p>Возвращаемое значение:<span id="txtHint"></span></p>
</body>
</html>
Пояснение исходного кода:
Если поле ввода пусто (str.length==0), функция очищает содержимое заполнителя txtHint и завершает работу функции.
Если поле ввода не пусто, то showHint() выполнит следующие шаги:
- Создать объект XMLHttpRequest
- Создать функцию, которая будет выполнена, когда ответ сервера будет готов
- Отправить запрос к файлу на сервере
- Обратите внимание на параметр (q), добавленный в конец URL-адреса (содержащий содержимое поля ввода)
Серверная страница, вызываемая через JavaScript выше, — это PHP-файл с именем "gethint.php".
Исходный код в "gethint.php" проверяет массив имён и затем возвращает соответствующее имя (имена) браузеру:
Пример
// Заполните массив именами
$a[]="Анна";
$a[]="Бриттани";
$a[]="Золушка";
$a[]="Диана";
$a[]="Ева";
$a[]="Фиона";
$a[]="Гунда";
$a[]="Хеге";
$a[]="Инга";
$a[]="Йоханна";
$a[]="Китти";
$a[]="Линда";
$a[]="Нина";
$a[]="Офелия";
$a[]="Петуния";
$a[]="Аманда";
$a[]="Ракель";
$a[]="Синди";
$a[]="Дорис";
$a[]="Ева";
$a[]="Эвита";
$a[]="Суннива";
$a[]="Тове";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";
// Получить параметр q из URL-адреса запроса
$q=$_GET["q"];
// Проверить, есть ли совпадающее значение, если q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint=$a[$i];
}
else
{
$hint=$hint." , ".$a[$i];
}
}
}
}
// Если нет совпадающего значения, установите вывод в "no suggestion"
if ($hint == "")
{
$response="no suggestion";
}
else
{
$response=$hint;
}
// Вывести возвращаемое значение
echo $response;
?>
Пояснение: Если JavaScript отправляет любой текст (т.е. strlen($q) > 0), то происходит следующее:
- Поиск имён, соответствующих символам, отправленным JavaScript
- Если совпадений не найдено, установите строку ответа в "no suggestion"
- Если найдено одно или несколько совпадающих имён, установите строку ответа со всеми именами
- Отправить ответ в заполнитель "txtHint"
Реализация AJAX с fetch и PHP
HTML + JavaScript:
Пример
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Пример AJAX с PHP</title>
</head>
<body>
<h1>Пример AJAX</h1>
<button id="ajaxButton">Получить данные из PHP</button>
<div id="result"></div>
<script>
document.getElementById('ajaxButton').addEventListener('click', function() {
// Отправить AJAX-запрос
fetch('server.php', {
method: 'POST', // Использовать POST-запрос
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ message: "Hello from client" })
})
.then(response => response.json()) // Разобрать как JSON
.then(data => {
document.getElementById('result').innerHTML = data.response; // Обновить страницу
})
.catch(error => console.error('Ошибка:', error));
});
</script>
</body>
</html>
PHP-сервер (server.php):
Пример
// Установить заголовки ответа для поддержки JSON
header('Content-Type: application/json');
// Получить входные данные из AJAX-запроса
$request = json_decode(file_get_contents("php://input"), истина);
// Обработать данные и вернуть ответ
if ($request['message'] === "Привет от клиента") {
$response = array('response' => 'Привет от PHP-сервера!');
} else {
$response = array('response' => 'Неверное сообщение');
}
// Вернуть результат клиенту
echo json_encode($response);
?>
Пояснение:
- Фронтенд: Когда пользователь нажимает кнопку, JavaScript использует
fetch()отправляет POST-запрос наserver.php, и отправляет фрагмент JSON-данных. - Бэкенд: PHP-сервер читает запрос, отправленный клиентом, обрабатывает его и возвращает JSON-ответ.
- Обработка ответа: После того как JavaScript получает ответ от PHP-сервера, он обновляет содержимое страницы.
Решения проблем кросс-доменных запросов PHP Ajax
Если вашим асинхронным запросам требуется кросс-доменность, вы можете проверить:Решения проблем кросс-доменных запросов PHP Ajax。
Другие расширения