2012-05-19 19 views
6

Czy mimo to mogę użyć zmiennej php w skrypcie JQuery?Użyj zmiennej PHP w JQuery

Przykład:

  • PHP zmienna: $sr2
  • Fragment skryptu JQuery (o zmiennej): $('#a2_bottom_$sr2')

Jak mogę to zrobić tak zmienna jest ważny w tym JQuery części?

Dzięki

+3

Gdzie jest Twój kod jQuery znajduje? Wewnątrz pliku PHP lub w osobnym pliku .js? –

+0

Znajduje się w tym samym pliku, co PHP –

Odpowiedz

8

To, co możesz zrobić, to użyć swojego PHP, aby wygenerować kod do zainicjowania Javy Zmienna skryptowa.

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

    $phpVar = "foo"; 
    echo "var phpVariable = '{$phpVar}';"; 

?> 
</script> 

Gdy kod PHP jest analizowany, a HTML jest wysyłane do użytkownika - wszyscy widzą to efekt echa PHP -

<script type="text/javascript"> 
    var phpVariable = 'foo'; 
</script> 

Teraz twój phpVariable jest dostępna dla JavaScript ! Więc go używać jak ty będzie w każdym innym przypadku -

$("div."+phpVariable); 

To pobierze nam żadnego elementu <div> z klasą foo -

<div class="foo"></div> 
+0

Jest naprawdę stary, ale teraz dostaję błąd javascript w kodzie "Uncaught SyntaxError: nieoczekiwany token <" –

+0

@IrtzaShahan - oznacza to, że wystąpił błąd podczas wstawiania zmiennej do javascript. Upewnij się, że zawijasz zmienną php w cudzysłów, aby efekt końcowy wyświetlany na stronie wyglądał jak normalny javascript. Pamiętaj, że przeglądarka nadal musi czytać i używać wartości javascript, które stworzyłeś. – Lix

9

PHP działa na serwerze, jQuery działa na kliencie. Jeśli chcesz, aby zmienna PHP była dostępna dla jquery (a przez to jako podstawowego silnika javascript), musisz przesłać wartość zmiennej w momencie wyprowadzania strony na serwer, np.

<script type="text/javascript"> 
    var my_php_var = <?php echo json_encode($the_php_var) ?>; 
</script> 

lub pobrać wartość przez wywołanie AJAX, co oznacza, że ​​zasadniczo tworzysz serwis internetowy.

+3

+1 dla json_encode; Myślę, że kluczowe jest to, że jeśli zamierzamy omówić drukowanie zmiennej jako kodu JS, który omawiamy, jak uniknąć jej łamania :) – Kato

2

Zakładając, że jQuery jest w tym samym pliku:

... $('#a2_bottom_<?php echo $sr2 ?>') ... 
+0

działa dobrze ... chyba że '$ sr2' zawiera cudzysłów, przestrzeń itp. – Spudley

+1

jest częścią identyfikatora, ale i tak nie może zawierać tych znaków. –

+0

dokładnie; jeśli zmienna '$ sr2' zawiera którykolwiek z tych znaków, niezależnie od tego, czy przez przypadek, czy przez celowy atak hackowy, sprawi, że linia kodu jQuery będzie nieważna. Przynajmniej użyj 'json_encode()', aby upewnić się, że jest poprawna składnia, ale w tym przypadku może być wymagana dalsza walidacja, na przykład spacja, itp. – Spudley

5

Mogłeś wyjście go jako część strony w tagu skrypt ... czyli

<script type="text/javascript"> 
<?php 
echo "var sr2 = \"" . $sr2 . "\""; 
?> 
</script> 

Następnie linia jQuery byłoby w stanie uzyskać do niego dostęp:

$('#a2_bottom_' + sr2) 
+1

dla bezpieczeństwa, użyj 'json_encode()', gdy echo zmiennej do twojego javascript, ale zasadniczo jest to właściwa odpowiedź. – Spudley