«Моя территория мысли»

AJAX в javascript

  • Вклад в Open Source

  • 7 Март 2017

  • 24

  • 0

AJAX в javascript

Асинхронность в javascript (AJAX) по умолчанию, прямо скажем, оставляет желать лучшего. Действительно, работать с объектом XMLHttpRequest напрямую, крайне неудобно, именно на базе этого объекта построены все фреймворки, библиотеки и так далее. Поэтому мною был написан и выпущен под MIT лицензией легкий компонент для асинхронного общения между клиентом и сервером.

Компонент может отправлять на сервер HTTP запросы типа GET, PUT, POST, PATCH и DELETE, имеется также возможность самому указать имя метода запроса.

Для того, чтобы отправить на сервер GET запрос, достаточно такого кода:

$request.get('/api/item/{id}/', {id: 100, success: function(response, event)
{
	console.dir(response);
}});

Для того, чтобы отправить на сервер POST запрос с данными, достаточно такого кода:

$request.post('/api/item/', {a: 'a', b: 'b', c: 'c'}, {success: function(response, event)
{
	console.dir(response);
}});

Для того, чтобы отправить на сервер PATCH запрос с данными, достаточно такого кода:

$request.patch('/api/item/{id}/', {a: 'a', b: 'b', c: 'c'}, {id: 100, success: function(response, event)
{
	console.dir(response);
}});

Для того, чтобы отправить на сервер DELETE запрос, достаточно такого кода:

$request.delete('/api/item/{id}/', {id: 100, success: function(response, event)
{
	console.dir(response);
}});

Для того, чтобы отправить на сервер PUT запрос, достаточно такого кода:

$request.put('/api/upload/', null, {success: function(response, event)
{
	console.dir(response);
}});

Обратите внимание на конструкцию {id} в URL адресах, это удобная альтернатива конкатенации строк.

Что касается стороны сервера, то получить данные достаточно просто, в случаи необходимости получения сырых данных, особенно это актуально для PUT запроса, можно воспользоваться следующим кодом:

echo file_get_contents('php://input');

Если необходимо, на стороне сервера, получить массив входных данных, особенно это актуально для POST и PATCH запросов, можно воспользоваться следующим кодом:

// Получение сырого тела запроса
$rawBody = file_get_contents('php://input');

// Парсинг сырого тела запроса
// @see http://php.net/parse_str
parse_str($rawBody, $data);

// Вывод на экран массива с входными данными
print_r($data);

Репозиторий компонента.
Исходный код компонента.

Спасибо за внимание!

Комментарии