2017-06-06 2 views
0

Ich habe eine Schaltfläche, die ein verstecktes Formular erstellt und ruft form.dom.submit() auf klicken. Ich muss eine Rückrufaktion für Erfolg und Misserfolg hinzufügen, um eine Aktion zu senden. Hier ist der Code:ExtJS 4: Hinzufügen von Erfolg/Misserfolg Callbacks zu form.dom.submit() Aktion

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); 
    } 
}); 

Haben Sie versucht params hinzufügen

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

einreichen Aber das half nicht.

+0

Können Sie erstellen Beispiel Geige dafür? kann das Problem dort lösen. –

+0

Gibt es einen Grund, das Formular zu verwenden? Welche Daten senden Sie? – MarthyM

Antwort

0

Sie erstellen ein Formular-DOM-Element anstelle von ExtJS form.

Wenn Sie eine ExtJS erstellen form, können Sie die submit Methode mit ihren options nennen, einschließlich success und failure. Wenn Sie die Option standardSubmit auf true setzen, können Sie die Option festlegen.

So etwas wie dies funktionieren sollte:

// 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'); 
    } 
}); 

Aber ich sehe keinen Grund, eine versteckte Form zu verwenden, wenn Sie eine einfache Verwendung AJAX request:

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