Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   getForm() и POST запрос на сервер. Трабл. (https://javascript.ru/forum/extjs/75813-getform-i-post-zapros-na-server-trabl.html)

Postgeograph 08.11.2018 14:26

getForm() и POST запрос на сервер. Трабл.
 
Добрый день!

Есть приложение с несколькими формами. Закономерно желание данные заполненных форм отправлять на сервер по нажатию некой кнопки н-р "сохранить".
Пробежавшись по интернетам нашел несколько вариантов решения, далее забуксовал на этих двух:

{text: 'save',
          ui: 'confirm',
        
          handler: function() {
              Ext.Ajax.request({
              url:'/api/renter/',
              method:'POST',
              params: {

                "document": "",
                "document_num": "",
                "legal_type": "",
                "_represent": "",
                "position_represent": "",
                "certificate": ""

              },
              jsonData:{
                   ReplaceAllRefs: true
              }
          })
      }


результат: - в дебагере выдается ошибка 403..

{
              text: 'save',
              ui: 'confirm',
              scope: this,
              handler: function() {
                  var form = this.up('foresto-rentertype').getForm();
                  if (form.isValid()) {  
                      form.submit({
                          success: function(form, action) {
                             Ext.Msg.alert('Success', action.result.msg);
                          },
                          failure: function(form, action) {
                              Ext.Msg.alert('Failed', action.result.msg);
                          }
                      });
                  } else {
                      Ext.Msg.alert('Error', 'Please correct form errors.')
                  }
            
          }
            	  
      	}


результат: дебагер сообщает о том что this.up is not a function


вопросы:
1) забираются ли значения формы в первом варианте вообще? Делал по нескольким экзамплам, не вижу блока кода который забирал бы значения перед POST запросом.
2)может ли быть связана ошибка 403 с клиентской частью приложения (у меня ли косяк).
3)что не так с кодом второго варианты. Почему функция "не видит" this?
4) в каких случаях необходимо организовывать store для POST запросов? или всегда можно обходится без store'в?

Всем спасибо!

siber-biber 08.11.2018 18:52

Цитата:

Сообщение от Postgeograph (Сообщение 498144)
вопросы:
1) забираются ли значения формы в первом варианте вообще? Делал по нескольким экзамплам, не вижу блока кода который забирал бы значения перед POST запросом.

нет не забираются ..вы сами вызываете AJAX запрос на низком уровне используя метод Ext.Ajax.request(), он ничего не знает про форму стало быть никакие поля не передаются.

Цитата:

Сообщение от Postgeograph (Сообщение 498144)
2)может ли быть связана ошибка 403 с клиентской частью приложения (у меня ли косяк).

вряд ли, код 403 - forbidden (https://developer.mozilla.org/ru/doc...TTP/Status/403) идет от сервера, означает что запрещен запрос по урлу ..например обращаешься к директории, а операция index для неё запрещена на уровне веб сервера.

попробуйте этот url ('вашсервер/api/renter/') открыть в браузере (это будет GET запрос, а не POST но эксперимента ради пойдёт) и посмотрите результат.


Цитата:

Сообщение от Postgeograph (Сообщение 498144)
3)что не так с кодом второго варианты. Почему функция "не видит" this?

видимо контекст не тот что вы ожидали ..this в этом месте это не кнопка как вы видимо хотели, а например window. я всего кода не вижу, но на это обычно наступают все начинающие.
одно из решений - добавлять эту кнопку в методе initComponent (либо конструкторе) где scope уже однозначно инстанс этого класса.

Цитата:

Сообщение от Postgeograph (Сообщение 498144)
4) в каких случаях необходимо организовывать store для POST запросов? или всегда можно обходится без store'в?

Всем спасибо!

store для post запросов как таковых не нужен. store это хранилище данных ..грубо говоря таблица с записями.

Postgeograph 15.11.2018 09:45

Спасибо, благодаря разъяснению разобрался с this.


Часовой пояс GMT +3, время: 14:18.