Strona 1 z 1

Przsyłanie zmiennej

: 19 sie 2013, 17:26:01
autor: 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:


Kod: Zaznacz cały

<?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?

Re: Przsyłanie zmiennej

: 19 sie 2013, 19:22:48
autor: Fineas_Nigellus
l2pl, są 2 typy zmiennych jeśli chodzi o ich 'widoczność'. Jeden konkretny blok lub żeby zmienna dotyczyła całego pliku. :-)

Re: Przsyłanie zmiennej

: 19 sie 2013, 19:28:37
autor: l2pl
Problem w tym iż przenoszę zmienną z php, Wtedy wartość jest widoczna od linijki gdzie wpisuje(tak mi się wydaje :)). Chodzi mi o pierwsze ładowanie strony, w takim sensie iż wszystko ma się wykonać za pierwszym razem. Przesyłam zmienną do JS i chciałbym, aby JS wykonał pewne działania na stronie. Wszystko musi być podczas wchodzenia na strone.

Po za tym samo pojawienie się takiego problemu mnie zaintrygowało.
Nie chcę aby wyglądało to następująco:

Kod: Zaznacz cały

<script type="text/javascript">
...
</script>
<?php 
...
 ?>
<script type="text/javascript">
...
</script>
<?php 
...
 ?>
itd.

Re: Przsyłanie zmiennej

: 20 sie 2013, 14:56:28
autor: zapiter
Proponuję użyć ajaxa i json-a, najprościej z wykorzystaniem jQuery.
Podczas ładowania strony wysyłasz ajaxową metodą żądanie wykonania jakiegoś skryptu php on zwraca dane w postaci tablicy json. I z taką tablicą robisz sobie co chcesz w js (w twoim przypadku wszystkie dane są już w zmiennych więc nie są widoczne).

Szybki poglądowy przykład:

Kod: Zaznacz cały

/* po stronie przeglądarki */
$.ajax({
   type: "POST",
   url: "ajax.php",
   data: {email: "test@test.pl",haslo: "moje_haslo"}
   }).done(function( msg ) {
      msg = jQuery.parseJSON(msg);
      if(msg.ok){
         console.log(msg.ok);
   } else if(msg.error) {
         console.log(msg.error);
   }                        
});

/* po stronie serwera */
<?php
                
$post = $_POST;

if(!checkEmail($post['email']))
   $msg['error'] = 'Błedny email';
                    
if(!checkPassws($post['haslo']))
   $msg['error'] = 'bledne haslo';    
                
if(!$msg['error'])
   $msg['ok'] = 'wszystko jest ok';
                
json_encode($msg);
exit();

?>    

Re: Przsyłanie zmiennej

: 20 sie 2013, 16:48:00
autor: l2pl
Bardzo dziękuję wszystkim odpowiadającym za pomoc.
Temat jest już chyba wyczerpany :)