Инструменты пользователя

Инструменты сайта


решения:взаимодействие_по_ajax

Это старая версия документа!


Взаимодействие по AJAX

Взаимодействие по AJAX с клиентской стороны реализуется функцией w_core.request По идеологии Wmart, событие должно быть привязано к тегу с атрибутом data-action Все объекты, над которыми выполняется действие программно, должны иметь атрибут data-type Поля, для которых необходима проверка значения помечаются атрибутом data-field.

Передача запроса при отправке формы

/views/somebody/somebody.form.php

<form data-action="sombody.action">
   <input type="text" name="field1" data-field="somebody.field1" />
   <input type="text" name="field2" data-field="somebody.field2" />
   <input type="submit" />
</form>

/assets/js/somebody.js

$('[data-action="sombody.action"]').on('submit', function(e){
   e.preventDefault(); //исключаем действие по умолчанию
   var form = $(this); //получаем форму
   var request = $(this).formObject(); //получаем данные из формы
   wmart.request('somebody.action',request,function(response){ 
     form.formErrors(response.errors); //обрабатываем результат проверки
     console.log(response.info); //выводим в консоль переданную переменную info
   });
});

/controllers/somebody.php

function somebodyAction() {
   $result = new w_result($this); //получение объекта результата запроса
   $field1 = w_input::int('field1'); //получаем поле field1 как число
   $field2 = w_input::text('field2'); //получаем поле field2 как текст
 
   $result->errorField($field1, 'somebody.field1', 'Поле field1 заполнено неверно'); 
   $result->errorField($field2, 'somebody.field2', 'Поле field2 заполнено неверно'); //проверка полей
 
   if (!$result->fail) { //проверяем, если валидация прошла успешно
      $result->info = 'Все ок!'; //передаем переменную info
   }
 
   $result->exec(); //Отправляем данные
}

Передача запроса при клике по ссылке или кнопке

$('[data-action="sombody.action"]').on('click', function(e){
   e.preventDefault(); //исключаем действие по умолчанию
   var obj = $(this); //ссылка
   var request = $(this).attrObject(); //получаем data-атрибуты ссылки
   wmart.request('somebody.action',request,function(response){ 
     console.log(response.result); //выводим поле result из ответа
   });
});
решения/взаимодействие_по_ajax.1542762280.txt.gz · Последние изменения: 2018/11/21 04:04 — a1