ExtJS 4:向form.dom.submit()action

时间:2017-06-06 12:19:19

标签: extjs

我有一个创建隐藏表单的按钮,并在单击时调用form.dom.submit()。我需要添加成功和失败回调来提交动作。 这是代码:

Ext.define("DownloadButton", {
  extend: 'Ext.button.Button',
  download: function (me, event) {
    this.form.dom.submit();
  },
  initComponent: function () {
    this.handler = Ext.Function.bind(this.download, this.scope || this);
    this.callParent(arguments);
  },
  afterRender: function () {
    this.callParent(arguments);
    this.form = this.getEl().createChild({
        tag: 'form',
        cls: 'x-hidden',
        method: 'POST',
        action: this.fileUrl,
        target: this.getId() + '-form-iframe'
    });
    this.getEl().appendChild(this.form);
  }
});

尝试添加参数提交

this.form.dom.submit({
  success: function(response) {
    console.log('success');
  },
  failure: function(response) {
    console.log('failure');
  }
});

但这并没有帮助。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您正在创建表单DOM元素,而不是ExtJS form

创建ExtJS form时,您可以使用submit调用options方法,包括successfailure。将standardSubmit选项设置为true后,您可以设置target选项。

这样的事情应该有效:

// Form creation
this.form = Ext.create('Ext.form.Panel', {
    hidden: true,
    method: 'POST',
    url: this.fileUrl,
    standardSubmit: true,
});

// Form submit
var target = this.getId() + '-form-iframe';
this.form.submit({
    target: target,
    success: function(response) {
        console.log('success');
    },
    failure: function(response) {
        console.log('failure');
    }
});

但是,当您使用简单的AJAX request时,我认为没有任何理由使用隐藏表单:

Ext.Ajax.request({
    url: this.fileUrl,
    success: function(response) {
        console.log('success');
    },
    failure: function(response) {
        console.log('failure');
    }
});