====== Взаимодействие по AJAX ======
Взаимодействие по AJAX с клиентской стороны реализуется функцией ''w_core.request''
===== Передача запроса при отправке формы =====
''/views/somebody/somebody.form.php''
''/assets/js/somebody.js''
document.querySelector('[data-action="sombody.action"]').addEventListener('submit', (e)=>{
e.preventDefault(); //исключаем действие по умолчанию
let elForm = e.target; //получаем элемент формы
let requestData = new FormData(elForm); //получаем данные из формы
w_core.request('somebody.action',requestData,function(responseData){
w_core.formErrors(elForm, responseData.errors); //обрабатываем результат проверки
console.log(responseData.info); //выводим в консоль переданную переменную info
});
});
''/controllers/somebody.php''
function somebodyAction() {
$response = w_response::load($this); //получение объекта результата запроса
$field1 = w_input::int('field1'); //получаем поле field1 как число
$field2 = w_input::text('field2'); //получаем поле field2 как текст
$response->errorField($field1, 'somebody.field1', 'Поле field1 заполнено неверно');
$response->errorField($field2, 'somebody.field2', 'Поле field2 заполнено неверно'); //проверка полей
if (!$response->fail) { //проверяем, если валидация прошла успешно
$response->info = 'Все ок!'; //передаем переменную info
}
$response->exec(); //Отправляем данные
}
===== Передача запроса при клике по ссылке или кнопке =====
document.querySelector('[data-action="sombody.action"]').addEventListener('click', (e)=>{
e.preventDefault(); //исключаем действие по умолчанию
let elBtn = e.target; //получаем элемент ссылки
let requestData = Object.assign({},elBtn.dataset); //получаем data-атрибуты ссылки
w_core.request('somebody.action',requestData,function(responseData){
console.log(requestData.info); //выводим в консоль переданную переменную info
});
});