还有什么我可以传递给Ext.Ajax.request的`form`属性?

时间:2013-08-06 21:12:33

标签: ajax forms extjs submit extjs4.2

通常会使用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之外别无他法。



感谢您的任何输入

2 个答案:

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