将表单作为json提交给服务器

时间:2015-01-15 15:02:28

标签: sencha-touch sencha-touch-2 sencha-touch-2.3

我正在尝试使用JSON中的params向服务器提交表单。

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

但它会将所有内容发送为form-www-urlencoded。

我已经检查过没有字段isFile设置为true(但是,它会以multipart-formdata的形式发送)standardSubmitfalse

我也尝试使用

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 个答案:

答案 0 :(得分: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)}
});
相关问题