Come accedere all'oggetto XHR non elaborato da jQuery Ajax? Il fatto è che la nuova specifica XMLHttpRequest Level 2 fornisce una sotto-proprietà di XHR chiamata upload ma apparentemente jQuery non ce l'ha ancora. Voglio continuare a utilizzare jQuery Ajax ma non so come unire la nuova funzionalità con la libreria jQuery corrente.XHR Level2 con jQuery per il caricamento di file
risposta
Nelle nuove versioni di JQuery, l'oggetto xhr grezzo viene avvolto in oggetto jqXhr che non ha alcun riferimento alla nuova proprietà di upload di xhr e nella documentazione non è molto chiaro come farlo. il modo che ho trovato per fare questo, con alcune impostazioni aggiuntive per ottenere un successo di file uploader jquery-ajax-HTML5 era:
var formData = new FormData($('#myForm')[0]);
$.ajax({
url: 'upload.php',
type: 'POST',
xhr: function() {
myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){
myXhr.upload.addEventListener('progress',progressHandlerFunction, false);
}
return myXhr;
},
data: formData,
cache: false,
contentType: false,
processData: false
});
con $ .ajaxSettings.xhr() ottengo il XHR origianal, poi verifico se ha il caricamento della proprietà per associare un evento di progresso per controllare una barra di avanzamento (HTML5?). Le altre impostazioni mi consentono di inviare tramite jquery ajax il modulo come oggetto FormData.
Una piccola modifica alla risposta di DannYOs. Ho creato un plugin jQuery che puoi chiamare su un file input per renderlo più semplice. Devi solo passare il tuo script di caricamento, poi la tua funzione di successo e poi la tua funzione di avanzamento.
$.fn.upload = function(remote,successFn,progressFn) {
return this.each(function() {
var formData = new FormData();
formData.append($(this).attr("name"), $(this)[0].files[0]);
$.ajax({
url: remote,
type: 'POST',
xhr: function() {
myXhr = $.ajaxSettings.xhr();
if(myXhr.upload && progressFn){
myXhr.upload.addEventListener('progress',progressFn, false);
}
return myXhr;
},
data: formData,
cache: false,
contentType: false,
processData: false,
complete : function(res) {
if(successFn) successFn(res);
}
});
});
}
Uso
$(".myFile").upload("upload.php",function(res) {
console.log("done",res);
},function(progress) {
console.log("progress", progress);
});
Change 'myXhr' a' var myXhr 'o lo stai rendendo una variabile globale. –
- 1. Caricamento file jQuery non utilizzando XHR o IFrame
- 2. caricamento file jQuery: è possibile attivare il caricamento con un pulsante di invio?
- 3. Caricamento file multipli con jQuery
- 4. Angular + Ionic caricamento di tutto il contenuto tramite XHR
- 5. Caricamento file di Gmail con jQuery
- 6. XHR ha terminato il caricamento del [...] messaggio di registro
- 7. Durante il caricamento di dati esterni, la console dice: XHR ha terminato il caricamento
- 8. Plugin Jquery per caricamento file cross browser
- 9. Barra di avanzamento caricamento file Blueimp/Jquery per ogni file
- 10. Lo stato di caricamento XHR è al 100% dall'inizio
- 11. Jquery recupera dati sull'errore XHR
- 12. Caricamento di più file con ASP.NET MVC e jQuery Plugin di caricamento di file multipli
- 13. jQuery FileUploadUI Caricamento file singolo
- 14. caricamento file jquery - come sovrascrivere il file NON rinominare
- 15. Cancella un singolo file, usando il caricamento del file jquery
- 16. Caricamento di file in blocchi utilizzando il plug-in di caricamento del file jquery in JAVA
- 17. Caricamento file csv in jQuery?
- 18. Ottenere il nome del file di caricamento prima di caricare con File Upload jQuery plugin di
- 19. Caricamento file con barra di avanzamento in Asp.Net Mvc/jQuery?
- 20. Caricamento file jQuery in AngularJS
- 21. jQuery Caricamento file: come modificare dinamicamente l'url di caricamento
- 22. jQuery Caricamento file "Errore - Risultato caricamento file vuoto" - Applicazione Rails
- 23. post http con formica per il caricamento di file
- 24. Come testare il caricamento di file con Jasmine BDD
- 25. Ritardo caricamento immagine con jQuery
- 26. Caricamento di file con SFTP
- 27. Caricamento di file con ClassLoader
- 28. caricamento pagina con Jquery AJAX
- 29. Caricamento file HTML5 con AngularJS
- 30. Caricamento file plug in modulo Jquery
La risposta è qui: http://api.jquery.com/jQuery.ajax/ (rubrica "Il jqXHR Object") –