Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JS] Zmienna
Forum PHP.pl > Forum > Przedszkole
L2PL
Witam, siedzę już dosyć długo nad pewnym małym drobiazgiem, który nie daje mi spać ;/ Otóż chciałbym przesłać zmienna(tablice) z php do js. Obecnie wykonuję to w ten sposób:

  1. <?php echo '<script type="text/javascript">zmienna = '.$zmienna.';</script>'; ?>


Natomiast tworzy to pewien malutki problem, iż zmienna jest widoczna od tego miejsca i skrypt w js musi znajdować się pod tym.

Buduję dosyć skomplikowany skrypt i zależy mi na tym, aby wszystko miało ręce i nogi. Dlatego nie chciałbym mieć strony przeplatanej na zmiane kodem js i php.

Dlatego moje ptyanie do was, czy istnieje jakiś sposób, aby zmienna była widoczna w całym skrypcie js?
xxdrago
No to zastosuj może, jakiś system typu smarty, żebyś oddzielił kod php od html... smile.gif Wtedy będziesz miał oddzielnie kod php a oddzielnie html i resztę
L2PL
A jakiś sposób nie wymagający dodania biblioteki? smile.gif
Crozin
@xxdrago: Co za różnica czy zrobi to w czystym PHP czy korzystając z jakiegoś systemu szablonów? W jednym i drugim przypadku będzie miał paskudny miszmasz.

@L2PL: Potraktuj dane wygenerowane przez skrypt PHP jako konfigurację uruchomieniową skryptu, tj.:
1. Swój skrypt JS, możesz wydzielić do kompletnie osobnego pliku i odizolować go od reszty środowiska:
[JAVASCRIPT] pobierz, plaintext
  1. (function(window) {
  2. "use strict";
  3.  
  4. // ...
  5.  
  6. var mojSkrypt = function(ustawienia) {
  7. // ...
  8. };
  9.  
  10. window.mojSkrypt = mojSkrypt;
  11. })(window);
[JAVASCRIPT] pobierz, plaintext
2. Przed </BODY> dołączasz powyższy skrypt oraz uruchamiasz go:
[JAVASCRIPT] pobierz, plaintext
  1. <script src="..."></script>
  2. <script>
  3. window.mojSkrypt({
  4. "zmiennaA": "wartoscA",
  5. "zmiennaB": 123
  6. });
  7. </script>
[JAVASCRIPT] pobierz, plaintext
3. Oczywiście obiekt będący argumentem dla funkcji, który ma zawierać dane wygenerowane przez PHP możesz utworzyć przy pomocy json_encode.
L2PL
to jest jquery?
Crozin
Nie, to jest czysty JS.
sunpietro
I unikaj za wszelką cenę tworzenia zmiennych globalnych w JS. Dobrym pomysłem jest stosowanie namespace dla własnej przestrzeni ogólnie dostępnych zmiennych.
L2PL
Crozin - Siedzę już dłuższą chwilę nad twoim ostatnim postem, ale niestety nie wszystko do końca rozumiem sad.gif Jeżeli nie byłby to duży problem, to czy mógłbyś mi napisać przykładowy skrypt wysyłający zmienną php do js z zastosowaniem tego co opisałeś w poście wyżej. Z góry bardzo dziękuję.

sunpietro - z jakiego powodu unikać zmiennych globalnych?
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.