以 json 的形式向服务器提交表单
submitting a form to the server as 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
完成,尽管文档明确说明 "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)}
});
我正在尝试使用 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
完成,尽管文档明确说明 "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)}
});