Skocz do zawartości

[JS/PHP] Problem ze zczytaniem zmiennej


Madness

Rekomendowane odpowiedzi

Witam. :bye1:

Problem jest następujący, w php stworzyłem sobie zmienną $zCount = 3, następnie w js starałem się zczytać wartość tej zmiennej, ale bez skutku.

Zczytywałem zgodnie z tym co piszą na forach: count = "<?php $zCount ?>";

Nie wiem, czy ja robie coś źle, czy trzeba to jakoś inaczej zrobić ?

W internecie podawali też zapis "<?= $zCount ?>", ale też bez skutku.

To w zasadzie jedyne co robie w funkcji js. :mellow:

Z góry thx za pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Jak wypisuje sobie potem zmienną alertem, to ma taką wartość: <?php echo $variable; ?>

Za nic nie chce wczytać wartości tej zmiennej.

 

Przed znacznikiem html mam:

 <?php 
  $variable = 3;
?>

 

I w head wczytuje plik js, z czego funkcja wygląda tak:

function getZCount()
{
count = "<?php echo $variable; ?>";
alert( count );
}

 

I po wyświetleniu się alerta, pokazuje wartość: <?php echo $variable; ?>

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

PHP jest językiem wykonywanym po stronie serwera, natomiast Javascript językiem wykonywanym po stronie klienta. To co wygenerujesz phpem jako html, będzie tylko statycznym tekstem, chyba, że phpem wygenerujesz stronę htmlową ze znacznikiem script i skomponujesz odpowiedni kod javascriptowy, np:

<html>
    <head>
    </head>
    <body>
        <script>alert( <?php echo $zmienna;?> );</script>
    </body>
</html>

To co Tobie podano wcześniej, to jest rozwiązanie tylko właściwe gdy kod javascriptowy jest generowany przez phpa.

 

Natomiast jeśli chcesz wczytywać osobny, zewnętrzny plik javascriptowy, to sprawa wygląda zupełnie inaczej. Są dwa wyjścia:

1. Wyłuskiwanie z treści strony odpowiedniej wartości:

a) Generujesz w phpie specjalny znacznik z wartością i nadajesz id temu znacznikowi.

B) Tworzysz w javascripcie funkcję, która uruchomi się po wczytaniu całej treści html.

c) Odniesiesz się do znacznika poprzez id i pobierzesz tekst znacznika.

Przykład:

<html>
    <head>
        <script>
            function start() {
                var zm = document.getElementById('zmienna');
                alert(zm.innerText);
            }
            window.onload = start;
        </script>
    </head>
    <body>

        <div id="zmienna" hidden><?php echo $zmienna;?></div>
    </body>
</html>

W powyższym przykładzie treść js wrzucasz w osobny plik javascriptowy linkowany w head.

 

Drugi sposób to po prostu specjalne zapytanie ajaxowe do strony php, która zwróci tylko wartość zmiennej np. poprzez strukturę json. W tym celu dla ułatwienia skorzystaj z jquery.

Odnośnik do komentarza
Udostępnij na innych stronach

A nie może być po prostu:

<html>
    <head>
        <script type="javascript">
            var obj = {
                zmienna: <?php echo $zmienna; ?>,
            };
        </script>
        <script type="javascript" src="plik.js"></script>
    </head>
    <body>
        (...)
    </body>
</html>

?

 

A plik JS może wyglądać tak:

window.onload = function() {
    alert(obj.zmienna);
}

Odnośnik do komentarza
Udostępnij na innych stronach

Szczerze to, jak odpaliłem twój kod na webserv'ie, to alert się nawet nie wyświetlił.

Zedytowałem go tylko w ten sposób, że zamiast wypisywania zmiennej, wypisałem '3' w php.

W przypadku kodu Ranmusa, to alert wypisuje Undefined, a jak zamienie innerText na innerHTML, to <!--?php echo "3"; ?-->.

Odnośnik do komentarza
Udostępnij na innych stronach

Kongrad-GM
Dzięgki ;_;

 

Szczerze to, jak odpaliłem twój kod na webserv'ie, to alert się nawet nie wyświetlił.

Zedytowałem go tylko w ten sposób, że zamiast wypisywania zmiennej, wypisałem '3' w php.

W przypadku kodu Ranmusa, to alert wypisuje Undefined, a jak zamienie innerText na innerHTML, to <!--?php echo "3"; ?-->.

Zapewne serwer nie widzi pliku JS. Jeżeli korzystasz z Chrome/Firefox użyj narzędzi pod klawiszem F12, i sprawdź czy się w ogóle plik ładuje.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

:)

 

Do tego lepiej nie debugować alertem, tylko np. pod Chrome przy pomocy podglądu w narzędziach developerskich lepiej używać funkcji js: console.log(...). Dzięki temu można ładnie debugować nie tylko wartości lecz całe struktury obiektów.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...