Библиотека Cash предоставляет легковесный интерфейс для работы с DOM и AJAX, сохраняя синтаксис, похожий на jQuery, при этом занимая минимальный объём и обеспечивая высокую производительность. Одним из ключевых сценариев использования Cash является отправка JSON-данных на сервер через HTTP-запросы.
$.ajax и JSONДля отправки JSON-данных используется метод $.ajax,
который поддерживает все основные HTTP-методы: GET,
POST, PUT, DELETE. Важным
аспектом является настройка заголовков и преобразование
JavaScript-объекта в JSON-строку перед отправкой.
Пример структуры запроса:
$.ajax({
url: '/api/data',
method: 'POST',
data: JSON.stringify({
name: 'Иван',
age: 30,
active: true
}),
contentType: 'application/json',
success: function(response) {
console.log('Ответ сервера:', response);
},
error: function(xhr, status, error) {
console.error('Ошибка запроса:', status, error);
}
});
Ключевые моменты:
data: объект, который необходимо отправить,
предварительно преобразуется через JSON.stringify.contentType: указывается
'application/json', чтобы сервер понимал формат
данных.success и error: функции обратного вызова
для обработки ответа сервера или ошибок запроса.$.post
для JSONХотя метод $.post предназначен для простых
POST-запросов, при отправке JSON важно вручную указать заголовок
Content-Type и преобразовать данные в строку JSON:
$.post({
url: '/api/user',
data: JSON.stringify({ username: 'user123', password: 'pass' }),
contentType: 'application/json',
success: function(response) {
console.log('Пользователь создан:', response);
}
});
Метод $.post более компактный, но гибкость меньше по
сравнению с $.ajax.
Cash поддерживает работу с промисами, что позволяет использовать
современный синтаксис async/await для асинхронных запросов.
Пример:
async function sendUserData() {
try {
const response = await $.ajax({
url: '/api/user',
method: 'POST',
data: JSON.stringify({ username: 'user123', role: 'admin' }),
contentType: 'application/json'
});
console.log('Ответ сервера:', response);
} catch (err) {
console.error('Ошибка при отправке данных:', err);
}
}
sendUserData();
Использование async/await делает код более читаемым и
удобным для обработки последовательных запросов.
При отправке вложенных объектов или массивов важно корректно сериализовать данные в JSON. Например:
const payload = {
user: {
name: 'Анна',
age: 25
},
permissions: ['read', 'write', 'execute']
};
$.ajax({
url: '/api/settings',
method: 'PUT',
data: JSON.stringify(payload),
contentType: 'application/json',
success: (res) => console.log(res)
});
Сервер получит точно такой же объект, включая вложенные структуры и массивы, что упрощает передачу сложных данных.
При отправке JSON часто требуется добавлять дополнительные HTTP-заголовки, например для токена авторизации:
$.ajax({
url: '/api/secure',
method: 'POST',
data: JSON.stringify({ action: 'update' }),
contentType: 'application/json',
headers: {
'Authorization': 'Bearer TOKEN_12345'
},
success: console.log,
error: console.error
});
Параметр headers позволяет добавить любой необходимый
заголовок, включая Authorization, X-CSRF-Token
или пользовательские ключи.
Cash предоставляет детальный доступ к статусу ответа через объект
xhr в функции error:
$.ajax({
url: '/api/data',
method: 'POST',
data: JSON.stringify({ key: 'value' }),
contentType: 'application/json',
success: (res) => console.log('Успех:', res),
error: (xhr, status, error) => {
console.log('Статус:', xhr.status);
console.log('Статус текст:', status);
console.log('Ошибка:', error);
}
});
xhr.status возвращает числовой HTTP-код (например, 404
или 500).status содержит строку состояния ("error",
"timeout", "abort").error — текстовая информация об ошибке.Для улучшения надежности запросов можно задавать таймаут и отмену:
const request = $.ajax({
url: '/api/data',
method: 'POST',
data: JSON.stringify({ item: 123 }),
contentType: 'application/json',
timeout: 5000, // 5 секунд
success: console.log,
error: console.error
});
// Отмена запроса через 2 секунды
setTimeout(() => {
request.abort();
console.log('Запрос отменён');
}, 2000);
Параметр timeout позволяет ограничить время ожидания, а
метод abort — прекратить выполнение запроса в нужный
момент.
Если сервер возвращает JSON, Cash автоматически пытается распарсить
его, если указан правильный Content-Type: application/json.
В случае текстового ответа можно принудительно преобразовать:
$.ajax({
url: '/api/data',
method: 'GET',
success: (responseText) => {
const data = JSON.parse(responseText);
console.log(data);
}
});
Использование встроенного парсинга делает обработку данных удобной и безопасной.
contentType: 'application/json' при
отправке JSON.JSON.stringify для сериализации сложных
объектов.async/await
вместо вложенных колбэков.headers для аутентификации и
защиты.error и проверять
xhr.status для точной диагностики.Эти принципы обеспечивают стабильную и предсказуемую работу с JSON-запросами через Cash, упрощают интеграцию с REST API и повышают читаемость кода.