我有一个创建隐藏表单的按钮,并在单击时调用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');
}
});
但这并没有帮助。
答案 0 :(得分:0)
https://www.sencha.com/forum/showthread.php?136662-Form-submit-doesn-t-callback-success
可能是您的回复格式不正确。检查链接。
答案 1 :(得分:0)
您正在创建表单DOM元素,而不是ExtJS form
。
创建ExtJS form
时,您可以使用submit
调用options方法,包括success
和failure
。将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');
}
});