以 json 的形式向服务器提交表单

submitting a form to the server as json

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

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 完成,尽管文档明确说明 "Performs a Ajax-based submission of form values (if standardSubmit is false)"。但是,这句话已经被证明是错误的,因为只要表单中有文件字段,表单就会作为多部分提交。

那么,有谁知道我如何才能将表单提交为 JSON?

可能性 2:我知道如果我通过 model.save() 提交模型,它会起作用,但我如何从动态表单创建模型(无需对字段进行两次硬编码)?

我认为下面可以解决您的问题。

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)}
});