Używam FormData do ajaxa przesłania pliku. Przesyłanie działa, ale problem polega na tym, że wywołania zwrotne "błąd" nigdy nie są wywoływane. Nawet gdy moja odpowiedź HTTP jest błędem wewnętrznego serwera 500 (w celu przetestowania tego, poprawiam serwer, aby odpowiedzieć na 500), wywoływane jest wywołanie zwrotne "load".XMLHttpRequest wywołuje zawsze detektor zdarzeń "ładuj", nawet jeśli odpowiedź ma status błędu
function upload_image() {
var form = document.getElementById('upload_image_form');
var formData = new FormData(form);
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function(e) {
alert("Success callback");
}, false);
xhr.addEventListener("error", function(e) {
alert("Error callback");
}, false);
xhr.open("POST", "/upload_image");
xhr.send(formData);
}
Wszelkie pomysły? Testuję to w Chrome.
Fajnie, działa! Ciągle ciekawy ... dlaczego wywołanie zwrotne "błędu" nie zostało wywołane w powyższej konfiguracji? –
Miałem problemy z chrome tylko zwracające odpowiedzi ajax bardzo dziwne. Dostałem 200, ale nigdy nie zostało ukończone. – Joe
@simmbot Odwołanie błędu nigdy nie jest wywoływane, ponieważ jest ono wyzwalane tylko przez błędy na poziomie sieci, ignoruje kody powrotu HTTP. – Ferdy