====== Взаимодействие по 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 }); });