2012-01-06 18 views
5

Finora Conosco due modi per passare le variabili php a javascript. C'è qualchevariabili Passo PHP a JavaScript/jQuery

  1. è: Uno è quello di utilizzare

    <script> 
         $(document).ready(function() 
          phpvalue=$("#hiddeninput").val() 
    
         }) 
        </script> 
    
    <input type="hidden" id="hiddeninput" value="phpvalue"> 
    

    E l'altro è di avere ad esempio un pulsante e utilizzando onclick

    <script> 
         function clickf(phpvalue) { 
    
         } 
        </script> 
    
    <input type="submit" onclick="clickf(<?php echo phpvalue ?>)"> 
    

    Tutti loro lavoro grande, ma altro modo che mi manca?

  2. Quale è il "migliore"?

  3. Qualche possibilità che io possa utilizzare all'interno dello script o del js esterno?

risposta

14
<script> 
    $(document).ready(function() 
     var phpvalue = <?php echo $var; ?> 
    }); 
</script> 
+0

In modo che risponde alla mia terza domanda. Ma posso usarlo in un js esterno? Grazie – viper

+1

non funziona in un file .js, ma si può semplicemente mettere tutto quello che javascript in un file php e trasmettere i propri valori php alle variabili JavaScript e importare il file php come si farebbe normalmente un file js. Joeri

+0

ho pensato che anche, ma ciò richiederebbe un colpo di testa come questo diritto? 'header (Content-Type: text/javascript)' – viper

2
<script> 

var javascript_variable = <?php echo $php_variable; ?>; 

</script> 
1

Invece di assegnare valori agli ingressi nascosti, si può solo generare JavaScript direttamente:

$script = <<<EOT 
<script> 
var phpvalue = $phpvalue; 
</script> 
EOT; 
echo $script; 
0

per l'esempio in alto non è necessario utilizzare val è possibile utilizzare qualsiasi ti piace. Per esempio

phpvalue="myvalue" 

quindi entro jquery

$("#hiddeninput").attr("phpvalue"); 
4

Come altri già risposto, basta mettere un tag PHP dovunque si sarebbe posto il valore JS, come var foo = <?= $php_value ?>; o var foo = <?php echo $php_value ?>;.

Se si desidera utilizzare questo in un file JavaScript esterno, è necessario assicurarsi che i file .js vengano analizzati da PHP. Se questa non è un'opzione per voi (per esempio, il vostro ospite non lo permette), vi consiglio di impostare i valori in un tag <script> all'interno del vostro <head> e poi basta riferimento variabili thos dal JavaScript esterno. In tal caso, suggerisco caldamente di assegnare loro uno spazio dei nomi come var app_vars = { foo: <?= $bar ?> } per non ingombrare l'oggetto globale.

Un altro modo sarebbe quello di recuperare i valori tramite Ajax. Ma la fattibilità di questo approccio dipende dal tuo caso d'uso.

E un altro suggerimento: se si desidera passare più variabili o array, c'è JSON cotto in PHP dalla versione 5.2:

<?php 
    $my_complex_var = array(
     'array' => array('foo', 'bar'), 
     'val2' => 'hello world' 
    ); 
?> 
<script> 
    var my_complex_js_var = <?= json_encode($my_complex_var) ?> 
</script> 
+0

Questo è molto bello grazie. Una domanda però perché avrei bisogno di namespace il var? Non l'ho capito! – viper

+0

Anche come accennato in precedenza da @garvey posso usare .php invece di .js giusto? – viper

+0

Il namespace ti aiuta a mantenere pulito il tuo oggetto globale. E mantenere il GO pulito è solo la migliore pratica per mille motivi. Se questo non ha troppo senso per te, suggerirei di guardare alcuni dei discorsi di Douglas Crockford. Basta fare una ricerca su Google Video per il suo nome. E sì, in realtà puoi semplicemente usare '.php' come estensione del file e puoi mescolare JS e PHP. O, ancora meglio, '.js.php'. In questo modo saprai ancora cosa sta succedendo in questi file. –