![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 7.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Zaskoczył mnie pewien przypadek. Pewnie ja coś przeoczyłem, dlatego chcę żeby ktoś też na to zerknął. Jest taka sytuacja: Kod JS: Kod var numer = 5; document.getElementById("jakisDIV").innerHTML = '<?php $test = "' + numer + '"; echo $test; $_SESSION["numer"] = $test; ?>'; w divie "jakisDIV" pojawi się poprzez powyższe echo wartość "5". Na innej podstronie jest taki kod PHP: Kod echo $_SESSION["numer"]; ...i tu się robią cuda. Na stronie tej pojawia się wartość: "' + numer + '" (łącznie z apostrofami). Proszę o wyjaśnienie dlaczego tak się dzieje? Dodam, że na każdej z tych stron jest użyte session_start();. Pisane z pamięci, jakby były jakieś błędy to przepraszam. Jakby trzeba było coś więcej podać to dopiszę. PS. Napiszę jeszcze, że jeśli w powyższym kodzie JS napisałbym z palca $_SESSION["numer"] = "5"; to na innej podstronie bez problemu mógłbym tą wartość odczytać, więc wina nie leży po stronie sesji. Ten post edytował Rellik 2.10.2013, 15:36:36 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) ![]() ![]() |
Dzieje się tak, ponieważ kod PHP jest wykonywany po stronie serwera, a kod JS po stronie użytkownika. Tzn. że, kod PHP wykonuje się na serwerze i zwraca dane(razem z kodem JS) do przeglądarki(czyli kod PHP wykonuje się najpierw...).
W twoim kodzie przypisujesz zmiennej z PHP treść "+ numer +". PHP interpretuje to jako zwykły tekst, i wysyła go do przeglądarki, a po stronie przeglądarki JS wyświetla zawartość swojej zmiennej. Dlatego też na stronie wyświetla Ci ok, a na podstronach już nie, bo brak jest odpowiedniego kodu JavaScript. Dla PHP JS jest zwykłym tekstem ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 7.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Podpowiedz mi jeszcze kolego jak to ugryźć żeby działało tak jak założyłem? Da rade to zrobić w jakoś mało inwazyjny sposób?
PS. A to dlaczego w powyższym przykładzie w zmiennej $test siedzi już wartość "5", a do zmiennej sesyjnej już się tej zmiennej $test nie da przypisać? Bo przecież echo ją zwraca prawidłowo. Ten post edytował Rellik 2.10.2013, 16:27:56 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) ![]() ![]() |
Nie siedzi wartość 5 tylko fragment kodu JavaScript.
Tak na szybko: Kod <?php $nr = 5; ?> ;
var numer = <?php echo $nr; ?> document.getElementById("jakisDIV").innerHTML = '<?php $test = "' + numer + '"; echo $test; $_SESSION["numer"] = $nr; ?>'; |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 7.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mnie poniższy kod podłożony do diva zwraca 5:
Kod var numer = 5; document.getElementById("jakisDIV").innerHTML = '<?php $test = "' + numer + '"; echo $test; $_SESSION["numer"] = $test; ?>'; więc zmienna $test przechowuje już odpowiednią wartość. Nie wiem dlaczego dalsza część kodu nie przypisuje już jej do zmiennej sesyjnej. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) ![]() ![]() |
Przeczytaj jeszcze raz to co napisałem i krok po kroku zastanów się czy rozumiesz. Jeżeli nie to powróć do kursów PHP i JavaScript rozdział 1
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 16:08 |