2012-10-15 33 views
5

我使用jQuery的文件上傳插件,我想要做一些自定義的jQuery的東西,一旦文件上傳就是從這裏https://github.com/blueimp/jQuery-File-Upload/wiki/OptionsjQuery的文件上傳插件不叫成功回調

現在說這個

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

現在我已經在我自己定義的JS測試這個自定義功能文件

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

但它不工作。

但是,如果我在這裏

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

編輯主文件,那麼它的工作原理。

+0

貴文件上傳元素也有ID爲「文件上傳」? –

回答

4

看着庫代碼,似乎所有的事件都被重命名爲刪除'fileupload'...所以'fileuploaddone'變得剛剛'完成'。它適用於所有其他回調。 看看這節:

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

如果您對所發生的事情有些疑惑,只是看裏面的代碼。這個庫沒有壓縮,所以很容易看到。例如

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

start回調被執行。 fileuploadstart不是。

8

檢查服務器端上傳腳本是否返回JSON回覆 - 在我的情況下,回覆爲空時文件無法成功上傳,但文件上傳成功。

所以,以下爲我工作與jQuery 1.9.1和「jQuery的文件上傳插件」的最新版本 - 5.21.3

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

我也注意到了,如果你的服務器沒有返回JSON,callback將不會觸發。 – Fostah

相關問題