Плагин загрузки файла jQuery не вызывает обратный вызов успеха

Я использую плагин загрузки файлов jQuery и хочу сделать некоторые пользовательские вещи jQuery после завершения загрузки файлов.

отсюда https://github.com/blueimp/jQuery-File-Upload/wiki/Options

Теперь это говорит это

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) {

Тогда это работает.


person Mirage    schedule 15.10.2012    source источник
comment
у вашего элемента fileupload также есть идентификатор fileupload?   -  person Asad Saeeduddin    schedule 15.10.2012


Ответы (2)


Глядя на код библиотеки, кажется, что все события переименовываются, удаляя «загрузку файла» ... поэтому «загрузка файла» становится просто «выполненной». Он действителен для всех других обратных вызовов. посмотрите в этом разделе:

    // 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 нет.

person Reflective    schedule 15.10.2012

Проверьте, возвращает ли скрипт загрузки на стороне сервера ответ JSON — в моем случае он не работал, когда ответ был пуст, но файл был успешно загружен.

Итак, ниже я работаю с jQuery 1.9.1 и новейшей версией «Плагина загрузки файлов jQuery» — 5.21.3.

$("#fileupload").bind("fileuploaddone", function (e, data) {
    console.log("fileuploaddone event fired");
});
person NXT    schedule 14.03.2013
comment
Я также заметил, что обратный вызов done: не срабатывает, если ваш сервер не возвращает JSON. - person Fostah; 11.10.2013