Класс для работы с AJAX прямо из PHP

eshcrow

Созидатель (II)
Сообщения
2
Симпатии
3
Баллы
51
В своё время поставил себе цель написать код, реализующий, быстрое и удобное обращение с AJAX, без расписывания кучи строк, параметров и т д., без создания подключаемых .js и без встраивания JS в код формы. Всё "дёшево и сердито" - PHP! Сейчас делюсь с вами своей наработкой.

Это размещаем в удобном месте вашего проекта, главное, чтобы доступ к нему был у всего скрипта (например, в файле с общими функциями):
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); //вызываем нашу волшебную функцию одной строкой

?>
 
Последнее редактирование:
За код спасибо, но кирилица в коде считается моветоном.
 
Назад
Верх