Отправив форму на сервер как json

Я пытаюсь отправить на сервер форму с параметрами в формате JSON.

form.submit({
  url:'JSONSaveEntry',
  method:'POST'
});

но он отправляет все как form-www-urlencoded.

Я уже проверил, что ни одно поле не имеет isFile установлен в true (но тогда, это пошло бы как multipart-formdata) и это standardSubmit является false,

Я также пытался использовать

Ext.Ajax.request({
  url:'JSONSaveEntry',
  method:'POST',
  params:form.getValues()
});

а также

Ext.Ajax.request({
  url:'JSONSaveEntry',
  method:'POST',
  params:Ext.encode(form.getValues())
});

Каждая подача делается как form-www-urlencoded, хотя в документах четко указано "выполняет представление значений формы на основе Ajax (если standardSubmit имеет значение false)". Но затем, это предложение уже доказано неверным, потому что когда поле файла находится в форме, форма представляется как составная часть.

Итак, кто-нибудь знает, как я могу получить форму как JSON?

Возможность 2: я знаю, что это работает, если я отправляю модель через model.save(), но как мне создать модель из формы на лету (без жесткого кодирования полей дважды)?

1 ответ

Решение

Я думаю, что ниже поможет решить вашу цель.

Ext.Ajax.request({
  url:'JSONSaveEntry',
  method:'POST',
  headers: { 'Content-Type': 'application/json' },
  jsonData : JSON.stringify(form.getValues()),
  success : function(response){ console.log("response from server")},
  failure : function(error){console.log(error)}
});
Другие вопросы по тегам