Закажите бесплатную презентацию продуктов РосБизнесСофт прямо сейчас!
Для этого используется метод 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() и отразится весь шаблон формы.