Téléchargement de fichier jquery de blueimp – "fait", rappels de "complets" ne fonctionnant pas pour IE 9

J'utilise le plugin Blueimp Jpeg pour télécharger des fichiers de manière asynchrone. Il fonctionne bien dans la plupart des autres navigateurs (avec quelques problèmes mineurs) – sur IE, je vois ce problème que les rappels "fait", "arrêt", "toujours", "complet" et d'autres événements ne sont pas invoqués.

Pendant le débogage, j'ai ajouté console.logs dans "done", "fail", "always" et ajouté une méthode "complete" à la requête ajax dans la fonction _onSend (dans jquery.fileupload.js) – mais aucune d'entre elles Semblent être invoqués dans IE.

_onSend: function (e, data) { var that = this, jqXHR, slot, pipe, options = that._getAJAXSettings(data), send = function (resolve, args) { that._sending += 1; jqXHR = jqXHR || ( (resolve !== false && that._trigger('send', e, options) !== false && (that._chunkedUpload(options) || $.ajax(options))) || that._getXHRPromise(false, options.context, args) ).complete(function (result, textStatus, jqXHR) { console.log("complete"); }).done(function (result, textStatus, jqXHR) { console.log("done", result); }).fail(function (jqXHR, textStatus, errorThrown) { console.log("fail", result); }).always(function (a1, a2, a3) { console.log("done", result); } }); return jqXHR; }; 

[Code de plugin coupé pour la lisibilité]

Je comprends que dans IE 9, jquery.iframe-transport.js utilisé pour le téléchargement de fichier (car les téléchargements de fichiers XHR ne sont pas pris en charge dans IE).

Je ne suis pas sûr de savoir comment je devrais réparer / déboguer ce problème.

Merci!

    L'événement effectué est déclenché si le type de contenu de la réponse est défini sur "text / html" ou "text / plain" (au lieu d'application / json) lorsque json est retourné depuis le serveur. Cela s'applique uniquement aux navigateurs qui ne supportent pas le téléchargement de fichier XHR (comme IE9) et où le plugin blueimp utilise plutôt le transport IFrame.

    Informations connexes sous "Négociation de contenu" dans la documentation du plugin: https://github.com/blueimp/jQuery-File-Upload/wiki/Setup

    Pour mémoire, j'ai rencontré ce problème lors de l'envoi direct vers S3, maintenant que leur fonctionnalité CORS l'autorise.

    La solution était de définir success_action_status sur '200', puis l'événement Done a été déclenché correctement.

    Dans le cas où quelqu'un a encore ce problème avec un téléchargement direct vers S3, la solution consiste à ajouter un champ success_action_status à la valeur de "201". Assurez-vous que vous l'incluez également dans les données de la politique puisqu'ils doivent correspondre.

    Apparemment, lorsque vous recevez le téléchargement depuis IE9 S3, vous renverrez une chaîne vide. Pour obtenir le retour de XML, dont le chargeur de fichier a besoin, vous devez le lui indiquer un statut de 201.