2015-01-15 3 views
1

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

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

но он отправляет все как форму-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 является ложный)". Но тогда это предложение уже доказано неправильно, потому что всякий раз, когда поле файла находится в форме, форма представляется как multipart.

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

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

+0

Что если вы дали объект парам такие как 'Params: {myJson: Ext.encode (form.getValues ​​())}', а затем на ServerSide json_decode параметр, который должен дать вам ваш объект JSON? –

ответ

2

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

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)} 
}); 
Смежные вопросы