Przesyłanie i odbieranie zmiennej JS - PHP za pomocą AJAX

0

Witam,
próbuję ogarnąć jak przekazać zmienną z JS do PHP za pomocą AJAXa i nie potrafię tego ogarnąć

<form >  
<select name="size">
	<option selected="selected" value="10">100x150</option>
	<option value="11">60x190</option>
	<option value="12">210x150</option>
	<option value="13">40x60</option>
</select>
</form>
$( "select[name=size]" ).change(function() {
	
	var e = document.getElementById("size");
	var selectedValue = e.options[e.selectedIndex].value;
	
		$.ajax({
            type:"POST", 
            url:"select.php", 
            data: {valueKey:selectedValue},
		});
			
			
})
<?php

$selectedValue = $_POST['valueKey'];

echo $selectedValue;


?>

Ten skrypt działa tak jak powinien, a przynajmniej spełnia taką funkcję o jaką mi chodziło. Po wybraniu opcji bez przeładowania strony przekazuje wartość do zmiennej selectedValue. Teraz chciałbym wartość tej zmiennej pobrać w pliku php i na podstawie wybranej opcji wyświetlić na stronie bez przeładowania odpowiednią treść.

Mógłby mnie ktoś naprowadzić na to jak skorzystać tu z AJAXa próbowałem ale nie wychodzi mi to pierwszy raz próbuję coś zrobić za pomocą AJAX

0

To pokaz jak probowales to robic bo tam zadnego wywolania ajaxa nie ma i skad mamy wiedziec na czym stanales

0

Chcę później użyć kilku instrukcji warunkowych a dopiero później wyświetlić odpowiednią treść, ale najpierw chciałem sprawdzić czy udało mi się przesłać tę wartość

0

Tutaj masz przykladowe wywolanie ajaxa. Patrz na success

Screenshot_20180203-143150.png

0

No sprawdziłem i funkcja działa w js zwraca info że wysłało dane ale nie jestem nadal w stanie tego pobrać php

dostaję komunikat

Notice: Undefined index: valueKey in D:\XAMPP\htdocs...\form\select.php on line 3

0

Nadaj formularzowi jakies id i dane ktore wysylasz daj jako $('#formid').serialize() i w PHP traktuj te dane jak ze zwyklego formularza (kluczami beda name inputow)

0

Albo wez "valueKey" w cudzyslow ;) bo wysylasz undefined : x

0

niestety "valueKey" nic nie zmienia

0

method, a nie type.

1

@szpryc: nie wysyłasz Ty przypadkiem undefined tam?

document.getElementById("size");

-> nie masz nigdzie przecież elementu o id size.

Zresztą, idąc the-jQuery-way, wystarczy $(this).val().

0
 <!doctype html>
<html lang="pl-PL">
 <head>
  <meta charset="utf-8">
  <title>selected test</title>

  <script src="jquery-3.3.1.js"></script>
</head>
<body>
 


<form id="testform" method="post" action="select.php" >  
<select name="size" id="size">
	<option selected="selected" value="10">100x150</option>
	<option value="11">60x190</option>
	<option value="12">210x150</option>
	<option value="13">40x60</option>
</select>
</form>


 
 <script>

$( "select[name=size]" ).change(function() {
	
	var e = document.getElementById("size");
	var selectedValue = e.options[e.selectedIndex].value;
	
        $.ajax({
            mthod:"post", 
            url:"select.php", 
            data: {
				valueKey : selectedValue,
			},
        
		
		}).done(function(){
			alert("wysłano");
		});
 
});
 
</script>
 </body>
</html>
<?php

$selectedValue = $_POST['valueKey'];
 
echo ($_POST['valueKey']);

?>
0

A teraz to masz literowke w method

0
  1. method, a nie mthod.
  2. let selectedValue = $(this).val(); wystarczy.
  3. Zrób po stronie PHP var_dump($_POST) oraz var_dump($_GET) + podejrzyj dane z poziomu konsoli przeglądarki (zakładka Network w przypadku Chrome'a).
0

Nie wiem czy to o to chodziło
screenshot-20180203172359.png

0

Tak, o to chodziło - i jak na dłoni widać, że:

  1. Wykonujesz żądanie GET, a nie POST.
  2. Nic nie wysyłasz (inaczej poniżej General, Response Headers oraz Request Headers byłaby czwarta zakładka z informacjami o tym, co wysyłasz).

Zatem "coś" masz nie tak ze swoim kodem JS - być może nie wczytujesz najnowszej wersji, tylko jakąś kopię z pamięci podręcznej or sth - ciężko stwierdzić.

0

Próbowałem uruchomić to nie wprowadzając żadnych zmian: http://kursjs.pl/kurs/jquery/jquery-ajax.php#selectyjson I efekt jest taki sam jak z moim kodem, a zakładka sieć jako Request Method tak samo pokazuje GET nie mam pojęcia czego ta wina

Czy możliwe że wina jest po stronie serwera xampp

0

No i tu przesyła i nawet z odpowiednią wartością ale czemu php nie umie użyć tej wartości
screenshot-20180204081802.png

0

Pokaż Preview - teraz musi działać.

0

nadal undefined
screenshot-20180204163534.png

aczkolwiek jak zrobię tak:

<?php

$selectedVal = $_GET['valueKey'];
 
die(json_encode($_POST));
	
?>

to poniżej informacji undefined podaje pobraną wartość

screenshot-20180204163912.png

0

No musiałbyś robić $_POST['valueKey'] :-P

0

To samo jak zrobię echo $_POST[valueKey];
screenshot-20180204164517.png
jak to mam teraz ugryźć bo już nie mam pojęcia

0

Zapytanie jest wykonywane poprawnie - co Ci wrzuca ten błąd undefined index do treści strony?

0

Już wiem dlaczego wywalało błąd przy pierwszym załadowaniu strony nie pobierało wartości z domyślnego pola więc praktycznie wartość jeszcze nie istniała. Problem zniknął po zastosowaniu isset

<?php

if(isset($_POST['valueKey'])){

?>	
	<div>
	<p><?php echo $_POST['valueKey']; ?></p>	
	</div>


<?php


};
	
?>

ale mam jeszcze jedną zagwozdkę dlaczego wartość jest wyświetlana w preview a normalnie na stronie nie
screenshot-20180209090306.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1