通常会使用form.submit({...})
将ExtJS表单发布到后端。我想现在使表单提交同步,所以我转而使用Ext.Ajax.request({async: false, ...})
。 Ext.Ajax.request()
的表单属性通常如下所示:
Ext.Ajax.request({
url: 'formsubmit',
form: 'formid',
method:'POST',
success: function(response, opts) {
alert("successfull");
},
failure:function(res,opt) {
alert("request failed");
}
});
我正在处理一堆匿名表格。有没有办法解决这个问题?
鉴于var form = {xtype: 'form', items: [...]}
我尝试将'formid'
替换为form.getEl()
,form.getForm()
和form.getForm().getFieldValues()
这些都不起作用。
除了为每个匿名表单分配生成的ID之外别无他法。
感谢您的任何输入
答案 0 :(得分:2)
看起来您可以将此作为form
属性的替代方法:
var form = this.down('form');
Ext.Ajax.request({
url: 'test.xyz',
params: form.getValues()
// etc...
});
getValues
为您提供提交所需的名称/值对。
答案 1 :(得分:1)
看起来ExtJS表单实际上并没有在标记中使用表单元素。在ExtJS表单上调用submit函数时,HTML表单元素是作为流程的一部分制作的,这是用于提交的表单。
http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.action.Submit-method-buildForm
理想情况下,您可以修改在doSubmit函数中调用的Ajax请求中使用的选项。既然你做不到,你可能要考虑覆盖Ext.form.action.Submit以便你可以,然后调用你在问题中提到的form.submit()函数。
http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.action.Submit-method-doSubmit