• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ajax w vanilla JS, wysyłanie formularza

42 Warsaw Coding Academy
0 głosów
465 wizyt
pytanie zadane 27 stycznia 2018 w JavaScript przez dziedziu Początkujący (370 p.)

Cześć :)

Mam pytanie odnośnie działania AJAX. Chciałbym wysyłać formularz ze strony za pomocą AJAX w vanilla JS. Dodanie preventDefault w początkowej części kodu powoduje, że formularz się nie wysyła, pominięcie tego powoduje przekierowanie do pliku .php. Co powinienem zrobić żeby formularz wysyłał się bez przeładowania strony?

var form = document.querySelector('.form');
form.addEventListener('submit', function (e) {
	
	e.preventDefault();
	
	var name = document.querySelector('.form-input--name').value;
	var phone = document.querySelector('.form-input--phone').value;
	var email = document.querySelector('.form-input--email').value;
	var message = document.querySelector('.form-input--message').value;
	
var data = JSON.stringify(
		{
			name:name, 
			phone:phone,
			email:email,
			message:message
		}
	);


	var request = new XMLHttpRequest();
	request.open('POST', 'contact.php', true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	request.send(data);

});

 

komentarz 27 stycznia 2018 przez niezalogowany
Na jakiej podstawie stwierdzasz, że się nie wysyła?
komentarz 27 stycznia 2018 przez dziedziu Początkujący (370 p.)
Bo nie dostaję maila. Bez preventDefault maila dostaję, ale przekierowuje mnie do contact.php. Teraz tak się zastanawiam, czy wysyłanie AJAXem do PHP nie wymaga przypadkiem jakiegoś specjalnego odbierania tego jsona? Czy normalnie za pomocą np. $_POST['name']; można to robić?
1
komentarz 27 stycznia 2018 przez rafal.budzis Szeryf (85,700 p.)

POST wysyłasz tak samo jak GET w linku

klucz=wartosc&klucz2=wartosc2

więc musisz jakoś uzyskać takiego stringa 

var data = "name=" + name + "&phone=" + phone;

Dodatkowo jak klikniesz F12 w zakładce Network powinno się coś pojawić jak wyślesz dane AJAXem możesz tam zobaczyć to powiedział na te dane PHP ;)

 

komentarz 27 stycznia 2018 przez dziedziu Początkujący (370 p.)
A w którym miejscu? Nigdzie nie widzę wgl. tych wysyłanych danych :(
1
komentarz 27 stycznia 2018 przez ScriptyChris Mędrzec (190,190 p.)

Zerknij do zakładki Network w narzędziach developerskich. Tam znajdziesz requesty i szczegółowe informacje o nich, m.in. właśnie parametry requesta.

komentarz 28 stycznia 2018 przez dziedziu Początkujący (370 p.)
Wszystko, jasne, moja nieuwaga, zmienna w js nazwana "email", w php "mail". Dzięki chłopaki za nakierowanie, temat do zamknięcia

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 600 wizyt
pytanie zadane 15 października 2017 w PHP przez Blue Obywatel (1,180 p.)
0 głosów
1 odpowiedź 286 wizyt
pytanie zadane 29 sierpnia 2019 w JavaScript przez Majonez.exe Gaduła (3,490 p.)
0 głosów
1 odpowiedź 366 wizyt
pytanie zadane 25 sierpnia 2019 w JavaScript przez niezalogowany

93,387 zapytań

142,385 odpowiedzi

322,547 komentarzy

62,748 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...