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

Problem z ajaxem

Ultraszybki serwer VPS NVMe BIZNES
0 głosów
100 wizyt
pytanie zadane 17 lipca 2017 w JavaScript, jQuery, AJAX przez `Krzychuu Mądrala (6,790 p.)

Witam

Mam problem z ajaxem gdy dodam opcję dataType: 'json', to wtedy kod przestaje działać i wyświetla się funkcja error, próbowałem to jakoś naprawić ale nie mam już pomysłów, jakby ktoś pytał to robię to na xampp ,tutaj mój kod:

 

      $.ajax({
            type: 'POST',
            url: 'sendmail.php',
	    dataType: 'json',
            data: {
                firstlastname: FirstName,
                email: Email,
                phonenumber: PhoneNumber,
                message: Message
            },
	   success: function (data) {				
		$('#sendmailRESULT').html('Twoja wiadomość została wysłana, postaramy sie odpowiedzić w ciągu 24!');
		$('#sendmailRESULT').addClass('SendMailTRUE');
            },
            error: function () {
                $('#sendmailRESULT').html('Przepraszamy ale nie udało się wysłać twojej wiadomości mamy chwilowe problemy z serwerem, zapraszamy ponownie później!');	
                $('#sendmailRESULT').addClass('SendMailFALSE');	
            }
        });

 

<?php

header("Content-type: application/json");

if (!empty($_POST['firstlastname'] && $_POST['email'] && $_POST['phonenumber'] && $_POST['message'])) {
	

	$FirstLastName = $_POST['firstlastname'];
	$Email = $_POST['email'];
	$PhoneNumber = $_POST['phonenumber'];
	$MessagePOST = $_POST['message'];
	
	
	$To= 'abc@wp.pl';
	$Title = 'Title';
	$Message = '';
	$Message .= 'Imię I Nazwisko: '.$FirstLastName.'\n';
	$Message .= 'Email: '.$Email.' Numer Telefonu: '.$PhoneNumber.'\n';
	$Message .= 'Wiadomość:'.$MessagePOST.'\n';
	$Headers = 'From: a@wp.pl'.'\r\n';
		
	
	$SendMail = mail($To, $Title, $Message, $Headers);
	
	
 
	$data = array();	
	
	if ($SendMail) {
		
		$data['SendMailTRUE'] = 'true';
		echo json_encode($data);		
		
	} else {
		
		$data['SendMailFALSE'] = 'false';
		echo json_encode($data);
		
	}
	
} else {

	header('Location: index.php');
	
}

?>

 

2 odpowiedzi

+1 głos
odpowiedź 17 lipca 2017 przez Tomek Sochacki Nałogowiec (29,630 p.)
wybrane 18 lipca 2017 przez `Krzychuu
 
Najlepsza

Spróbuj tak:

w JavaScript:

const data = {
    firstlastname: FirstName,
    email: Email,
    phonenumber: PhoneNumber,
    message: Message
}

//i potem:
$.ajax({
    method: 'POST',
    url: 'sendmail.php',
    dataType: 'json',
    contentType: "application/json;charset=utf-8",
    data: `ajaxData=${JSON.stringify(data)}` },
//i dalej callback success itp.

i później w PHP:

  if(isset($_POST['ajaxData'])) {
    $json = json_decode($_POST['ajaxData'], true);
  } else {
    echo "Nie otrzymano danych!";
  }

//i potem wszystko masz w tablicy nie POST ale $json:
$json['firstlastname']; 
$json['email']; //itd.

 

A i jeszcze jedno... gdzie walidacja danych :) (i to wg mnie zarówno w JS jak i w PHP)

komentarz 17 lipca 2017 przez `Krzychuu Mądrala (6,790 p.)
bardzo dziękuje za pomoc i poświęcony czas :)
komentarz 17 lipca 2017 przez Tomek Sochacki Nałogowiec (29,630 p.)
spoko :) najważniejsze, że udało się uruchomić aplikację.

A tak na marginesie, jeśli chcesz się uczyć "webu" to proponuję teraz ten kod z jQuery przepisać np. na użycie "czystego" XMLHttpRequest i Promise :) Masz punkt bazowy, który działa i wiesz już jak analizować ruch server-client więc czas poznać Ajax "od środka" :)

Powodzenia w nauce!

Pozdrawiam
komentarz 17 lipca 2017 przez `Krzychuu Mądrala (6,790 p.)
Dziękuje za podpowiedz, tak właśnie zrobię, dziękuje i również pozdrawiam :)
komentarz 18 lipca 2017 przez `Krzychuu Mądrala (6,790 p.)

rozwiązałem problem z dataType, gdy wczoraj cały dzień walczyłem z tym dziś dostałem olśnienia :D, dodałem w anonimowej funkcji error i wyświetliłem za pomocą console.log(error)

            error: function (error) {
				
				console.log(error);
								
            }

co się okazało w obiekcie był błąd generowany przez php, między innymi chodziło  o niedziałającą funkcje mail (na xampp) przez co wyskakiwał błąd po usunięciu linii mail (w celu testu) okazało się że funkcja dataType działa prawidło i przesyła dane do funkcji success. Jeszcze raz dziękuje Tomasz Sochacki za wczorajszą pomoc i poświęcony czas :)

1
komentarz 18 lipca 2017 przez Tomek Sochacki Nałogowiec (29,630 p.)
to dobrze, że udało się rozwiązać problem i co ważniejsze, znaleźć przyczynę :)

Tak na marginesie to kolejna nauczka, że tworząc aplikację od samego początku należy myśleć o ewentualnych błędach, testach itp. Nie bez powodu w node błąd jest przekazywany jako pierwszy argument w funkcjach zwrotnych w myśl zasady najpierw error, potem success :)

A przy okazji przynajmniej wreszcie coś nie coś poduczyłem się jQuery :) Nie korzystam z tej biblioteki ale to nie oznacza, że nie warto jej znać :)

Pozdrawiam
+1 głos
odpowiedź 17 lipca 2017 przez kosaa Stary wyjadacz (13,370 p.)
w konsoli JS masz jakieś bledy?

po dwa, w logach php co Ci wyswietla?

po trzy, strzelam, ze ten header w php jest zbędny
header("Content-type: application/json");
komentarz 17 lipca 2017 przez `Krzychuu Mądrala (6,790 p.)
w konsoli 0 błędów, jedyny błąd który pokazuje php to że nie może odpalić funkcji mail(), ponieważ robię to na localhost
komentarz 17 lipca 2017 przez kosaa Stary wyjadacz (13,370 p.)
ale jest to error czy warning? jak error to wywala Ci się cały skrypt pewnie z kodem 500, daletego po stronie JS masz przekierowanie na Ajax::error
komentarz 17 lipca 2017 przez `Krzychuu Mądrala (6,790 p.)
Warning
komentarz 17 lipca 2017 przez Tomek Sochacki Nałogowiec (29,630 p.)
Komunikację Ajax można łatwo weryfikować po wejściu w narzędzia deweloperskie Chrome (F12) -> zakładka Network i masz całą historię żądań i odpowiedzi http, tylko musisz odświeżyć stronę i ponownie wysłać request ajax żeby pokazało wszystko. Będziesz miał tam widoczny ciąg wysyłany jako żądanie oraz odpowiedź serwera.

Podobne pytania

0 głosów
1 odpowiedź 79 wizyt
0 głosów
1 odpowiedź 69 wizyt
pytanie zadane 2 października 2017 w PHP, Symfony, Zend przez chumanista Obywatel (1,220 p.)
0 głosów
1 odpowiedź 75 wizyt
pytanie zadane 5 listopada 2017 w JavaScript, jQuery, AJAX przez mi-20 Gaduła (3,340 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze).
Ciekawy innych porad? Odwiedź tę stronę!

44,113 zapytań

83,900 odpowiedzi

167,011 komentarzy

21,086 pasjonatów

Przeglądających: 293
Pasjonatów: 19 Gości: 274

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...