Загрузка файла jquery не работает с jquery 3.x
Мой скрипт отлично работает с jQuery 1.x и 2.x, но не работает с jQuery 3.x
imageInput.fileupload();
var jqXHR = imageInput.fileupload('send', {
files: files,
formData: $.extend({csrfmiddlewaretoken: csrftoken}, attachmentData),
url: {{ id }}_settings.url.upload_attachment,
})
.success(function (result, textStatus, jqXHR) {
$.each(result.files, function (index, file) {
console.log('success');
});
})
.error(function (jqXHR, textStatus, errorThrown) {
console.log('error occurred.');
});
Браузер FF жалуется, что success
а также error
функция не найдена.
jQuery.Deferred exception: imageInput.fileupload(...).success is not a function
....
undefined
Это сообщение об ошибке. Спасибо за помощь.
1 ответ
jQuerys success
а также error
изначально были частью $.ajax
, как в
$.ajax({
success : function() {},
error : function() {}
})
Но, как $.ajax
стартер, возвращающий Deferreds, изменился на done
а также fail
$.ajax({}).done().fail()
Это вызвало некоторую путаницу, поэтому идентичные методы называются success
а также error
был добавлен, так что можно было сделать
$.ajax({}).success().error()
Решение удалить success
а также error
был сделан в выпуске jQuery 3.x
Вы можете просто поменяться done
а также fail
в качестве прямой замены в вашем коде для success
а также error
в качестве плагина Fileupload используется скрытый $ jauery $.ajax.
Отложенные jQuery теперь совместимы с Promise A+, так что можно использовать then
а также catch
также