Закажите бесплатную презентацию продуктов РосБизнесСофт прямо сейчас!
Для этого используется метод jsApplication.loadAjax(). Это надстройка над обычным $.ajax().
Где:
Пример использования JS:
jsApplication.loadAjax({ url: jsApplication.setLinkParam('action', 'calc'), data: { product: jsApplication.getNumber($(‘#f_product’).val()), number: jsApplication.getNumber($(‘#f_number’).val()), }, success: function(response) { jsApplication.showMessage(response.response.message, jsApplication.messageType.SUCCESS, jsApplication.showTime); }, error: function(error) { jsApplication.showMessage(error, jsApplication.messageType.ERROR, FjsApplication.showTime); } });
Конструкция jsApplication.setLinkParam(‘action’, ‘calc’) возвращает текущий адрес страницы и в качестве параметра дописывает:
?action=calc
Например, она выведет:
http://myname.rbs360.ru/orders/1/?action=calc
В «Формах» запрос принимается в методах checkAjax() и checkAjaxMethods(). Они идентичные и вызываются ДО вывода страницы на экран, НО ПОСЛЕ получения текущего объекта ($this->structure).
protected function checkAjax() { $action = $this->Http->Get->request('action', 'Varchar'); // calc switch($action) { case ('calc'): { try { $product = $this->Http->Post->request('product', 'Number'); $number = $this->Http->Post->request('number', 'Number'); if(!$product) { throw new \Exception("Не указан ID"); } $product->total($product->price_nds * $number)->sync(); $this->resultSuccess(['message' => 'Данные успешно изменены']); } catch(\Exception $e) { $this->resultError($e->getMessage()); } } break; } }
Важно! Методы ResultSuccess() и ResultError() прерывают выполнение дальнейшего кода и разметка не попадет в ответ. Если их не вызвать в методе checkAjax(), то далее выполнится метод onPlay() и отразится весь шаблон формы.