В своё время поставил себе цель написать код, реализующий, быстрое и удобное обращение с AJAX, без расписывания кучи строк, параметров и т д., без создания подключаемых .js и без встраивания JS в код формы. Всё "дёшево и сердито" - PHP! Сейчас делюсь с вами своей наработкой.
Это размещаем в удобном месте вашего проекта, главное, чтобы доступ к нему был у всего скрипта (например, в файле с общими функциями):
Использование (POST):
В нужном месте вашего кода, где хотим сделать AJAX запрос вставляем:
Пример файла-обработчика:
Использование (GET):
В нужном месте вашего кода, где хотим сделать AJAX запрос вставляем:
Это размещаем в удобном месте вашего проекта, главное, чтобы доступ к нему был у всего скрипта (например, в файле с общими функциями):
PHP:
<?php
class Async {
public function __construct ($uri = '', $data = []) {
$formDataScript = '';
$asyncRequestHtml = '';
if (!empty($data)) {
$method = 'POST';
$formDataScript = '
var formData = new FormData();
';
foreach ($data as $key => $value) {
$formDataScript .= '
formData.append("'.$key.'", "'.$value.'");';
}
} else {
$method = 'GET';
$formDataScript = '
var formData = null;';
}
$asyncRequestHtml .= '
<script>
function responseListener() {
console.log(this.responseText);
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", responseListener);
oReq.open("'.$method.'", "'.$uri.'");
oReq.setRequestHeader("X-Requested-With", "XMLHttpRequest");
'.$formDataScript.'
oReq.send(formData);
</script>';
echo $asyncRequestHtml;
}
}
function аякс($uri, $data){
$req = new Async($uri, $data);
return $req;
}
?>
Использование (POST):
В нужном месте вашего кода, где хотим сделать AJAX запрос вставляем:
PHP:
<?php
include('functions.php');//файл, где находится класс, представленный выше
$uri = "ajax/process.php"; //файл-обработчик, к которому делаем запрос
$data = ['firstname' => 'John', 'lastname' => 'Blane']; //массив с данными
аякс($uri, $data); //вызываем нашу волшебную функцию
//или можно вот так:
аякс("ajax/process.php", ['firstname' => 'John', 'lastname' => 'Blane']); //вызываем нашу волшебную функцию одной строкой
//или можно вот так:
?>
Пример файла-обработчика:
PHP:
<?php
if(session_id() == '') {
session_start();
}
//- Конфигурационный файл
include("../connect.php");
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
//Если данные в базе изначально в WINDOWS-1251 - конвертируем, если в UTF-8 - эти строки можно удалить
$firstname = iconv("UTF-8","windows-1251", $_POST['firstname']);
$lastname = iconv("UTF-8","windows-1251", $_POST['lastname']);
if(!empty($firstname)) {
//ДОБАВЛЯЕМ В БАЗУ - здесь может быть запрос к базе данных
}
if(!empty($lastname)) {
//ДОБАВЛЯЕМ В БАЗУ - здесь может быть запрос к базе данных
}
}
?>
Использование (GET):
В нужном месте вашего кода, где хотим сделать AJAX запрос вставляем:
PHP:
<?php
include('functions.php');//файл, где находится класс, представленный выше
$variable = "yes"; //переменная, которая добавляется в строку GET-запроса
$uri = "ajax/process.php?checked=".$variable; //файл-обработчик, к которому делаем запрос
аякс($uri, NULL); //вызываем нашу волшебную функцию
//или можно вот так:
аякс("ajax/process.php?checked=".$variable, NULL); //вызываем нашу волшебную функцию одной строкой
?>
Последнее редактирование: