【问题标题】:What else can I pass to the `form` property of Ext.Ajax.request?我还能将什么传递给 Ext.Ajax.request 的 `form` 属性?
【发布时间】:2013-08-06 21:12:33
【问题描述】:

通常使用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: [...]} 我试过用form.getEl()form.getForm()form.getForm().getFieldValues() 替换'formid',但都不起作用。

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



感谢您的任何意见

【问题讨论】:

  • 为什么不看看Ext.Ajax.request 做了什么来序列化表单呢?

标签: ajax forms extjs submit extjs4.2


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    看起来 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

    【讨论】:

    • 我最终只使用了 form.submit() 并将需要在一系列 AJAX 调用之后立即运行的代码放入一个回调中,并在我的代码周围加上条件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2017-10-12
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多