Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównanie zmiennej z js i php
Forum PHP.pl > Forum > PHP
1992bartekk
  1. <div id="a">test01</div>
  2. <script>
  3. JSVar = document.getElementById('a').innerHTML;
  4. </script>
  5.  
  6. <?php
  7.  
  8. $zmienna="<script>document.write(JSVar);</script>";
  9.  
  10. if($zmienna=='test01'){
  11. echo 'yes';
  12. }
  13.  
  14.  
  15.  
  16. ?>



Witam mimo że wyświetla mi poprawną wartość "test01" to zapytanie if nie działa
untorched
No bo niby dlaczego miało by działać? Javascript jest wykonywany po stronie przeglądarki, a PHP po stronie serwera. Twoja kod PHP wygląda tak naprawdę tak:
  1. if("<script>document.write(JSVar);</script>" == "test01") // Oba ciągi znaków są różne od siebie, więc się nie wykona
1992bartekk
Tak to wiem... tak myśle czy da rade to zrobić jakoś inaczej ty to zadziałało sad.gif
Dejmien_85
Nie rozumiesz jednej rzeczy - najpierw wykonuje się skrypt PHP, później dopiero JavaScripty. W Twoim przykładzie porównujesz dwa stringi:

a) "<script>document.write(JSVar);</script>"
b) "test01"

Z punktu widzenia PHP są to stringi. Kod w stringu a) nie zostanie sparsowany przez JavaScript. Ty chcesz wrzucić do PHP kod z JS-a i liczysz na to, że zostanie wykonany jako JavaScript. ; )

Najłatwiej byłoby Ci porównać dwie zmienne po stronie przeglądarki, tj.

  1. <script>
  2. var imie = "Karol";
  3. var imiePhpowe = "<?php echo "Karol" ?>"; // albo użyć skróconej formy <?= "Karol" ?>,
  4.  
  5. if (imie == imiePhpowe) {
  6. alert("imiona są takie same");
  7. } else {
  8. alert("imiona różnią się");
  9. }
  10. </script>


Jeżeli natomiast chciałbyś przekazać zmienną z JavaScript do PHP, wtedy droga jest trudniejsza, musiałbyś ją przesłać na serwer, przykładowo AJAX-em (lub nie) używając metody POST (GET'a do ustawiania parametrów się nie poleca).

Najprościej jest jednak zrobić to co napisałem wcześniej, czyli zadeklarować zmienną w JavaScipcie i jej wartość ustawić wykorzystując PHP (może to być tez przy pomocy jakiegoś sytemu templatek, np. Twig, Blade etc.)

Pamiętaj - najpierw wykonuje się kod po stronie serwera, później dopiero ten w przeglądarce, nie ma takiej opcji, aby kod JavaScript wykonał się po stronie interpretera PHP - to całkowicie dwa różne języki. ; )
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.