2013-01-08 9 views
5

Wiem, że jest to trochę paradoksalne, ponieważ XMLHttpRequest nie powinien przeładowywać strony, i to jest cały sens tego.Jak uniknąć automatycznego przeładowywania strony po wywołaniu XMLHttpRequest?

Wypróbowana w najnowszej wersji Chrome, Safari na iOS i na Androida. Wszystkie te same wyniki.

Wysyłam przez niego formularz z plikami. Działa świetnie, strona docelowa odbiera poprawnie dane i wyświetla je. Odsyła 200, "OK". (To jest facebook)

Ale wtedy moja strona ładuje się automatycznie. Podobnie jak w przypadku przesłania formularza za pomocą formularza HTML i przycisku przesyłania. (Który był mój pierwotny problem)

Oto jak to zrobić, z JavaScript

// Get the form element 
var formData = new FormData(document.getElementById("photosubmitform")); 

var xhr = new XMLHttpRequest(); 
xhr.open('POST', 'https://graph.facebook.com/' + facebookWallId + '/photos', false); 
xhr.onload = function(event) 
{ 
    var json = xhr.responseText; // Response, yay! 
} 
xhr.send(formData); // Sending it, will reload the page on success... 

Odpowiedz

12

jakaś szansa jesteś wyzwalanie to poprzez złożenie formularza? Jeśli nie wykonasz return false w programie obsługi onsubmit, formularz nadal będzie wysyłany.

+1

Działa! Dodano go do znacznika

w następujący sposób: Dzięki! – daivuk

+0

Nie miałem pojęcia, że ​​formularz zostanie wywołany przez wysłanie go przez xhr. – daivuk

+0

Świetnie! Dziękuję za to, że zrobiłem mój dzień. – Benvorth

Powiązane problemy