2

通常一个人使用form.submit({...}). 我现在想让我的表单提交同步,所以我切换到使用Ext.Ajax.request({async: false, ...}). 的 form 属性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");
    }
});

我现在正在处理一堆匿名表格。有没有办法解决?

给定 avar form = {xtype: 'form', items: [...]} 我尝试用 , 替换'formid'form.getEl()form.getForm()form.getForm().getFieldValues()不起作用。

除了为我的每个匿名表单分配一个生成的 id 之外,没有其他方法可以解决这个问题。



感谢您的任何意见

4

2 回答 2

2

看起来您可以将其作为form属性的替代方法:

var form = this.down('form');
Ext.Ajax.request({
    url: 'test.xyz',
    params: form.getValues()
    // etc...
});

getValues为您提供提交所需的名称/值对。

于 2013-08-07T02:21:57.540 回答
1

看起来 ExtJS 表单实际上并没有在标记中使用表单元素。当在 ExtJS 表单上调用提交函数时,会制作一个 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

于 2013-08-07T00:45:06.257 回答