2013-06-05 11 views
11

Ho una variabile PHP:Come passare il valore della variabile php per jQuery

$name_of_current_page 

che ho a disposizione, a mio avviso, e voglio fare il valore disponibile per jQuery. Il modo migliore per farlo è il seguente?

$(document).ready(function() { 
      var current page = "<?php echo $name_of_current_page; ?>" ; 

}); 
+4

Sì. Almeno il più semplice. È possibile complicare ulteriormente questo è si desidera eseguendo una richiesta AJAX al server per i dati e quindi caricando la variabile in questo modo. –

+1

forse non è il massimo, ma funziona bene :) – PiLHA

+0

possibile duplicato di [Come passare una variabile PHP in Javascript] (http://stackoverflow.com/questions/4742515/how-to-pass-a-php-variable-to -javascript) –

risposta

20

Dipende davvero se stai usando una sorta di motore di template.

  1. Se stai usando PHP pianura, l'unica opzione per voi è quello di echo variabile:

    var current page = "<?php echo $your_var; ?>"; 
    
  2. Twig motore:

    var current page = "{{ your_var }}"; 
    
  3. Smarty e RainTPL motori :

    var current page = "{$your_var}"; 
    

Come potete vedere, ci sono altri modi. Tutti funzionano bene. Dipende davvero da come vorresti scrivere e organizzare il tuo codice. Personalmente uso Twig e lo trovo veramente facile, veloce e diretto.

Inoltre, come altri hanno sottolineato, è possibile effettuare chiamate AJAX al server e recuperare le variabili in questo modo. Trovo quel metodo che richiede tempo, inefficiente e insicuro. Se scegli questo metodo, invierai richieste a uno script. Tutti saranno in grado di inviare/ricevere richieste a quello script che apre le porte ad alcuni robot e attacchi DoS/DDoS.

+0

Dire che usare AJAX apre le porte ai bot e DoS è come dire che mettere qualcosa sul web apre le porte. Mentre in realtà, questo è vero, ma ci sono molti motivi per utilizzare AJAX per estrarre i dati in javascript. Tutti i maggiori siti, IDK come Google, Facebook e altri. fa questo. Mettere un index.php semplice con lo apre agli attacchi DoS. Se il suo webservice è progettato correttamente, quindi non deve preoccuparsi (tanto) di qualcuno che ottiene una sospensione dei suoi dati. –

+0

@MichaelRice non fraintendetemi: usare AJAX è fantastico. Ma sorge qualche problema. Quindi dovrebbe essere usato saggiamente. E confrontando Google, Facebook, ecc. Probabilmente un sito piccolo-medio è sbagliato. Google può permettersi di rendere pubblici tali servizi, poiché dispongono di risorse di sistema illimitate e possono gestire bot/DoS/DDoS a colpo d'occhio, mentre i siti di dimensioni medio-piccole andranno offline. – tftd

0

document.title dovrebbe darvi quello che vi serve .. cose come questa sia interrogare l'imho DOM o Ajax.

Trovo che sia meglio separare i livelli e non combinare presentazione e controller con codice html/php pepato.

+0

'$ name_of_current_page' non deve significare' document.title'. – furas

+0

@furas che altro potrebbe significare? –

+1

'

name_of_current_page

' o può essere utilizzato in molti altri tag come 'title =" ... "' o 'alt =" .. "' per alcune ragioni SEO;) – furas

3

var corrente pagina = "";

Non penso che sia possibile avere spazi in una variabile. (potrei sbagliarmi).

In ogni caso per semplificare il codice, ho appena finito di farlo leggermente.

$name_of_current_page = "HomePage"; 

E per Javascript;

var currentPage = "<?= $name_of_current_page; ?>"; 

Questo dovrebbe essere.

+2

È possibile avere spazi bianchi nelle variabili. Eccetto per i tag php questo è il modo giusto. È meglio non usare i tag brevi con php. Invece di "

+0

@RensTillmann Alcuni di quello che ho trovato indica che sono i tag php corti ('') che vengono rimossi, mentre i tag _echo_ corti ('') rimangono. Hai un link a una risorsa ufficiale? – Izkata

+0

Giusto, non ho letto abbastanza bene la fonte: http://www.php.net/~derick/meeting-notes.html - (Dal PHP 5.4.0,

0

Prima di tutto, che tu chiedi, è un modo normale per riempire il codice lato client, ma questo verrà caricato al caricamento della pagina, se vuoi eseguirlo dal vivo una volta caricata la pagina, devi usare ajax, causa è il modo in cui ti comunicherai con gli script lato server, non è possibile jquery o javascript caricare i vp php su live una volta che la pagina è stata caricata

Problemi correlati