Jak uzyskać dostęp do surowego obiektu XHR z Ajax jQuery? Rzecz w tym, że nowa specyfikacja XMLHttpRequest Level 2 zapewnia poddomyślność XHR nazywaną wysyłaniem, ale najwyraźniej jQuery jej jeszcze nie ma. Chcę nadal używać jQuery Ajax, ale nie wiem jak scalić nową funkcjonalność z obecną biblioteką jQuery.XHR Level2 z jQuery do przesłania pliku
Odpowiedz
W nowych wersjach JQuery surowy obiekt xhr jest zawijany w jqXhr Obiekt, który nie ma żadnego odniesienia do nowej właściwości wysyłania xhr iw dokumentacji nie jest zbyt jasny jak to zrobić. sposób znalazłem to zrobić, z kilku dodatkowych ustawień w celu uzyskania pomyślnego jquery-ajax-HTML5 plików uploader było:
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
});
z $ .ajaxSettings.xhr() otrzymuję origianal XHR, a następnie przetestować czy ma właściwość upload do wiązania zdarzenia postępu, aby kontrolować pasek postępu (HTML5?). Inne ustawienia pozwalają mi przesłać przez jquery ajax formularz jako obiekt FormData.
Mała modyfikacja odpowiedzi DannYOs. Zrobiłem wtyczkę jQuery, do której można wywołać wejście do pliku, aby było prostsze. Po prostu przesyłasz swój skrypt do przesyłania, następnie funkcję sukcesu, a następnie funkcję postępu.
$.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);
}
});
});
}
Wykorzystanie
$(".myFile").upload("upload.php",function(res) {
console.log("done",res);
},function(progress) {
console.log("progress", progress);
});
Zmień '' myXhr' do var myXhr 'albo robisz z niego globalną zmienną. –
- 1. Umieszczanie pliku wejściowego w jquery FormData do przesłania do PHP
- 2. jQuery ajax() opcja - xhr
- 3. jQuery mobile wybierz obraz do późniejszego przesłania
- 4. dostosować przycisk pliku do przesłania obrazu
- 5. Zdarzenie do przesłania pliku anuluj w javascript
- 6. Angular 2 (zmiana) do przesłania pliku
- 7. Jak użyć znacznika zakotwiczenia do przesłania formularza z jquery
- 8. PHP Sprawdzanie poprawności przesłania pliku
- 9. . Odpowiednik curl do .NET do przesłania pliku do REST API?
- 10. Prosty przykład pliku encji do przesłania za pomocą OneupUploaderBundle
- 11. Jquery otrzyma dane o błędzie XHR
- 12. żądanie przesłania jquery pjax dwa razy
- 13. Żądanie PUT do przesłania pliku nie działającego w kolbie
- 14. Korzystanie z narzędzia cURL w celu przesłania pliku bez symbolu @?
- 15. WebClient.UploadFile przekazuje plik do przesłania jako strumień
- 16. Pliki do przesłania Symfony 2.2
- 17. Zmiana Enter od przesłania do Tab?
- 18. Jak wygenerować tymczasowy URL do przesłania pliku do Amazon S3 z biblioteką Boto?
- 19. Używanie PHP do przesłania do Amazon S3
- 20. EventSource XHR headers
- 21. Złap błąd 404 dla XHR
- 22. IE10 - Musi kliknąć 2 razy, aby przesłać formularz po wybraniu pliku do przesłania
- 23. Przycisk do pokazania wybierz plik do przesłania okno dialogowe
- 24. Symulowanie żądania GET XHR
- 25. Jak uzyskać zawartość załączonego pliku js bez xhr?
- 26. Testowanie XHR w Jest
- 27. Ładowanie pliku csv do jQuery?
- 28. Uzyskaj końcowy URL z obiektu XHR po przekierowaniu
- 29. Jak przekonwertować obiekt javascript do rzeczywistego pliku w celu przesłania z HTML5
- 30. Formularz Playframework i dwa przyciski do przesłania
Odpowiedź jest tutaj: http://api.jquery.com/jQuery.ajax/ (dział "The jqXHR Object") –