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

Problem z ajaxem

0 głosów
92 wizyt
pytanie zadane 5 dni temu w JavaScript, jQuery, AJAX przez `Krzychuu Gaduła (3,850 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ź 5 dni temu przez Tomasz Sochacki Stary wyjadacz (10,860 p.)
wybrane 4 dni temu 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 5 dni temu przez `Krzychuu Gaduła (3,850 p.)
bardzo dziękuje za pomoc i poświęcony czas :)
komentarz 5 dni temu przez Tomasz Sochacki Stary wyjadacz (10,860 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 5 dni temu przez `Krzychuu Gaduła (3,850 p.)
Dziękuje za podpowiedz, tak właśnie zrobię, dziękuje i również pozdrawiam :)
komentarz 4 dni temu przez `Krzychuu Gaduła (3,850 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 4 dni temu przez Tomasz Sochacki Stary wyjadacz (10,860 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ź 5 dni temu przez kosaa Mądrala (7,050 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 5 dni temu przez `Krzychuu Gaduła (3,850 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 5 dni temu przez kosaa Mądrala (7,050 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 5 dni temu przez `Krzychuu Gaduła (3,850 p.)
Warning
komentarz 5 dni temu przez Tomasz Sochacki Stary wyjadacz (10,860 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ź 77 wizyt
pytanie zadane 28 grudnia 2016 w JavaScript, jQuery, AJAX przez Boshi Szeryf (90,790 p.)
+1 głos
1 odpowiedź 48 wizyt
pytanie zadane 3 lutego w JavaScript, jQuery, AJAX przez MaciekM Użytkownik (920 p.)
0 głosów
1 odpowiedź 96 wizyt
pytanie zadane 17 czerwca 2016 w JavaScript, jQuery, AJAX przez pietrek98 Początkujący (430 p.)

36,094 zapytań

72,754 odpowiedzi

140,028 komentarzy

16,786 pasjonatów

Przeglądających: 189
Pasjonatów: 21 Gości: 168

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.

...