8 (800) 302-62-68
+7 (499) 348-29-58
sale@rbs-crm.ru

Документация разработчика

Отправка AJAX-запроса

Для этого используется метод jsApplication.loadAjax(). Это надстройка над обычным $.ajax().

Где:

  • type — тип GET/POST. По умолчанию отправляется “post”
  • url — адрес отправки, как правило на текущую страницу.
  • data — объект параметров

Пример использования 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() и отразится весь шаблон формы.