2012-12-05 30 views
8

Ho un file php che genera una variabile e vorrei che la variabile venisse inserita in una funzione javascript che è chiamata da onclick sulla pagina principale. È possibile inviare da PHP a javascript?Invia la variabile PHP alla funzione javascript

+1

Deve essere diverso dopo ogni clic (ad esempio, uno script che restituisce l'ora corrente lato server)? Se è così, probabilmente hai bisogno di [Ajax] (https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started). – apsillers

risposta

15

È possibile effettuare le seguenti operazioni:

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

Come dovrei specificare da quale file php sto ottenendo la variabile? – user1879926

+1

Penso che tu abbia bisogno di imparare php un po 'di più. Fai un semplice tutorial che ti mostrerà come fare eco alle cose. prova http://php.net/manual/en/tutorial.php –

+1

perché è necessario avere json_encode lì? perché non semplicemente echo $ myVariable? – TGeorge

1

Se ho capito bene, si dovrebbe essere in grado di fare qualcosa sulla falsariga di quanto segue:

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

È necessario terminare con un punto e virgola – mplungjan

+0

@username tbd Devo posizionare l'intero file php tra parentesi? Altrimenti, come potrei specificare da quale file php proviene la variabile? – user1879926

4

Javascript avrebbero dovuto essere definiti all'interno di un file PHP-analizzato.

Per esempio, in index.php è possibile inserire

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

Basta scrivere:

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

Ora è disponibile come JavaScript variabile con il nome di my_variable_name in qualsiasi punto sotto il codice precedente.

0

È possibile passare valori PHP a JavaScript. Il PHP eseguirà il lato server in modo che il valore venga calcolato e quindi è possibile farlo eco al codice HTML contenente il javascript. Il javascript verrà quindi eseguito nel browser dei client con il valore PHP calcolato lato server.

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

Un'ottima opzione è utilizzare jQuery/AJAX. Look at these examples e provali sul tuo server. In questo esempio, in FILE1.php, si noti che sta passando un valore vuoto. È possibile passare un valore se lo si desidera, che potrebbe essere simile a questa (javascript assumendo Le variabili di chiamata username e password:

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

Nell'esempio FILE2.php, si sarebbe recuperare quei valori come questo:

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

Poi fare la tua ricerca MySQL e tornare i valori così:

echo 'You are logged in'; 

Ciò consegnare il messaggio al You are logged in su funzione ccess in FILE1.php e la stringa del messaggio verrebbe memorizzata nella variabile chiamata "data". Pertanto, la riga alert(data); nella funzione riuscita avviserà tale messaggio. Ovviamente, puoi aggiungere a echo tutto ciò che desideri, anche grandi quantità di HTML, come intere strutture di tabelle.

Here is another good example da rivedere.

L'approccio è creare il modulo e quindi utilizzare jQuery per rilevare il pulsante premere e inviare i dati a un file PHP secondario tramite AJAX. Gli esempi precedenti mostrano come farlo.

Il file PHP secondario riceve le variabili (se ce ne sono) e restituisce una risposta (qualunque cosa si scelga di inviare). Tale risposta viene quindi visualizzata nella sezione Success: della chiamata AJAX come "dati" (in questi esempi).

Il codice jQuery/AJAX è javascript, quindi sono disponibili due opzioni: è possibile posizionarlo all'interno dei tag <script type="text/javascript"></script> all'interno del documento PHP principale oppure <?php include "my_javascript_stuff.js"; ?> nella parte inferiore del documento PHP.Se si utilizza jQuery, non dimenticare di includere la libreria jQuery come negli esempi forniti.

Nel tuo caso, sembra che tu possa quasi rispecchiare il primo esempio che ho suggerito, non inviare dati e ricevere la risposta nella funzione di successo AJAX. Qualunque cosa tu debba fare con quei dati, però, devi farlo all'interno della funzione di successo. Sembra un po 'strano all'inizio, ma funziona.

Problemi correlati