2012-10-15 5 views
5

Ich bin mit jQuery Fileupload-Plugin, und ich möchte einige benutzerdefinierte jQuery Sachen tun, wenn FileuploadjQuery-Datei-Upload nicht Plugin Aufruf Erfolg Rückruf

von hier https://github.com/blueimp/jQuery-File-Upload/wiki/Options

Jetzt geschieht es sagt, das

Callback for successful upload requests. 
$('#fileupload') 
     .bind('fileuploaddone', function (e, data) {/* ... */}) 

Jetzt habe ich diese benutzerdefinierte Funktion für die Prüfung definiert in meinem eigenen js

$('#fileupload').bind('fileuploaddone', function (e, data) {/* ... */ 
alert('Hello'); 
}) 
Datei

Aber es funktioniert nicht.

Aber wenn ich hier

// Callback for successful uploads: 
      done: function (e, data) { 

Dann die Hauptdatei bearbeiten funktioniert es.

+0

hat Ihr Fileupload-Element auch id "Fileupload" hat? –

Antwort

4

Betrachtet man den Bibliothekscode, scheinen alle Ereignisse umbenannt zu werden und "fileupload" zu entfernen ... also wird 'fileuploaddone' einfach 'fertig'. Es gilt für alle anderen Rückrufe. Blick auf diesen Abschnitt:

// Other callbacks: 
    // Callback for the submit event of each file upload: 
    // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); 
    // Callback for the start of each file upload request: 
    // send: function (e, data) {}, // .bind('fileuploadsend', func); 
    // Callback for successful uploads: 
    // done: function (e, data) {}, // .bind('fileuploaddone', func); 
    // Callback for failed (abort or error) uploads: 
    // fail: function (e, data) {}, // .bind('fileuploadfail', func); 
    // Callback for completed (success, abort or error) requests: 
    // always: function (e, data) {}, // .bind('fileuploadalways', func); 
    // Callback for upload progress events: 
    // progress: function (e, data) {}, // .bind('fileuploadprogress', func); 
    // Callback for global upload progress events: 
    // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); 
    // Callback for uploads start, equivalent to the global ajaxStart event: 
    // start: function (e) {}, // .bind('fileuploadstart', func); 
    // Callback for uploads stop, equivalent to the global ajaxStop event: 
    // stop: function (e) {}, // .bind('fileuploadstop', func); 
    // Callback for change events of the fileInput(s): 
    // change: function (e, data) {}, // .bind('fileuploadchange', func); 
    // Callback for paste events to the pasteZone(s): 
    // paste: function (e, data) {}, // .bind('fileuploadpaste', func); 
    // Callback for drop events of the dropZone(s): 
    // drop: function (e, data) {}, // .bind('fileuploaddrop', func); 
    // Callback for dragover events of the dropZone(s): 
    // dragover: function (e) {}, // .bind('fileuploaddragover', func); 

Wenn Sie Zweifel haben, was passiert, auf den Code schauen nur nach innen. Diese Bibliothek ist nicht komprimiert, so dass sie leicht zu sehen ist. zum Beispiel

// start: function (e) {}, // .bind('fileuploadstart', func); 

start Rückruf implementiert ist. fileuploadstart ist nicht.

8

Überprüfen Sie, ob das serverseitige Upload-Skript eine JSON-Antwort zurückgibt - in meinem Fall funktionierte es nicht, wenn die Antwort leer war, aber die Datei erfolgreich hochgeladen wurde.

So unten arbeitet für mich mit jQuery 1.9.1 und der neuesten Version der "jQuery Datei-Upload-Plugin" - 5.21.3

$("#fileupload").bind("fileuploaddone", function (e, data) { 
    console.log("fileuploaddone event fired"); 
}); 
+0

Ich bemerkte auch das getan: Rückruf würde nicht ausgelöst, wenn Ihr Server JSON nicht zurückgeben würde. – Fostah

Verwandte Themen