2012-12-05 8 views
8

Mam plik php, który generuje zmienną i chciałbym, aby zmienna została umieszczona w funkcji javascript, która jest wywoływana przez onclick na stronie głównej. Czy można to przesłać z PHP do javascript?Wyślij zmienną PHP do funkcji javascript

+1

Czy po każdym kliknięciu musi być inny (np. Skrypt, który zapewnia bieżący czas po stronie serwera)? Jeśli tak, prawdopodobnie potrzebujesz [Ajax] (https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started). – apsillers

Odpowiedz

15

można wykonać następujące czynności:

<script type='text/javascript'> 
    document.body.onclick(function(){ 
     var myVariable = <?php echo(json_encode($myVariable)); ?>; 
    }; 
</script> 
+0

Jak określić, z jakiego pliku php otrzymuję zmienną? – user1879926

+1

Myślę, że musisz trochę nauczyć się php. Zrób prosty samouczek, który pokaże Ci, jak echo rzeczy. spróbuj http://php.net/manual/en/tutorial.php –

+1

, dlaczego jest potrzebny tam json_encode? dlaczego po prostu nie echo $ myVariable? – TGeorge

1

Jeśli rozumiem zostanie poprawnie, powinieneś być w stanie zrobić coś wzdłuż linii następujących czynności:

function clicked() { 
    var someVariable="<?php echo $phpVariable; ?>"; 
} 
+1

Musisz zakończyć to średnikiem – mplungjan

+0

@ nazwa_użytkownika tbd Czy muszę umieścić cały plik php w nawiasach? Jeśli nie, w jaki sposób mogę określić, z jakiego pliku php pochodzi zmienna? – user1879926

4

JavaScript musiałaby być zdefiniowana w pliku PHP-analizowany.

Na przykład w index.php można umieścić

<?php 
$time = time(); 
?> 
<script> 
    document.write(<?php echo $time; ?>); 
</script> 
4

Wystarczy napisać:

<script> 
    var my_variable_name = "<?php echo $php_string; ?>"; 
</script> 

Teraz dostępny jako JavaScriptu zmienna o nazwie my_variable_name w dowolnym punkcie poniżej powyższego kodu.

0

Możesz przekazać wartości PHP do JavaScript. PHP wykona stronę serwera, więc wartość zostanie obliczona, a następnie można ją wyświetlić w kodzie HTML zawierającym javascript. Javascript będzie następnie wykonywał w przeglądarce klienta wartość PHP obliczoną po stronie serwera.

<script type="text/javascript"> 
    // Do something in JavaScript 
    var x = <?php echo $calculatedValue; ?>; 
    // etc.. 
</script> 
1

Doskonałym rozwiązaniem jest użycie jQuery/AJAX. Look at these examples i wypróbuj je na swoim serwerze. W tym przykładzie w pliku FILE1.php zauważ, że przekazuje pustą wartość. można przekazać wartość, jeśli chcesz, co może wyglądać mniej więcej tak (zakładając javascript Vars nazywa username i password:

data: 'username='+username+'&password='+password, 

W przykładzie FILE2.php, należy pobrać te wartości tak:

$uname = $_POST['username']; 
$pword = $_POST['password']; 

Następnie wykonać wyszukiwanie MySQL i zwracają wartości w następujący sposób:

echo 'You are logged in'; 

byłoby to dostarczyć wiadomość You are logged in do SU ccess funkcja w FILE1.php, a ciąg znaków będzie przechowywany w zmiennej o nazwie "data". Dlatego linia alert(data); w funkcji sukcesu spowodowałaby ostrzeżenie tego komunikatu. Oczywiście można dowolnie dowolnie, nawet duże ilości HTML, takie jak całe struktury tabel.

Here is another good example do przejrzenia.

Podejście polega na utworzeniu formularza, a następnie użyciu jQuery do wykrywania naciśnięcia przycisku i przesłania danych do dodatkowego pliku PHP za pośrednictwem AJAX. Powyższe przykłady pokazują, jak to zrobić.

Pomocniczy plik PHP otrzymuje zmienne (jeśli jakiekolwiek są wysyłane) i zwraca odpowiedź (cokolwiek wybierzesz do wysłania). Ta odpowiedź pojawia się w sekcji Sukces: w wywołaniu AJAX jako "dane" (w tych przykładach).

Kod jQuery/AJAX to javascript, więc masz dwie opcje: możesz umieścić je w tagach <script type="text/javascript"></script> w głównym dokumencie PHP, lub możesz <?php include "my_javascript_stuff.js"; ?> na dole dokumentu PHP.Jeśli używasz jQuery, nie zapomnij dołączyć biblioteki jQuery, jak w podanych przykładach.

W twoim przypadku wygląda na to, że możesz w przybliżeniu odzwierciedlać pierwszy przykład, który zasugerowałem, nie wysyłając żadnych danych i odbierając odpowiedź w funkcji powodzenia AJAX. Wszystko, co musisz zrobić z tymi danymi, musisz jednak wykonać w funkcji sukcesu. Z początku wydaje się trochę dziwne, ale działa.