2011-11-19 30 views
36

Eventuali duplicati:
How to pass JavaScript variables to PHP?inviare variabile JavaScript PHP variabile

Per prima cosa ho pensato che avrei dovuto convertire javascript per php, ma poi ho scoperto che non posso a causa del server di e esecuzioni lato client. Così ora ho semplicemente voglio inviare una variabile

<script type="text/javascript"> 
function scriptvariable() 
{   
    var theContents = "the variable"; 
} 
</script> 

ad una variabile PHP

<?php 
$phpvariable 
?> 

Tale funzione in javascript viene eseguito quando diciamo che clicco su un pulsante.

Ora non ho idea di come assegnare quello phpvariable a quello javascript per usare phpvariable per cercare cose nel mio Database. So che posso aggiungerlo al mio URL o qualche cosa e aggiornare la pagina .. Ma mi piacerebbe farlo con AJAX perché potrei dover usare ulteriormente questo metodo Ajax nella mia pagina web ...

Così è c'è un modo semplice per farlo senza dover scaricare pagine di codice sulla mia pagina per fare una cosa semplice?

+1

Hai esaminato jQuery per implementare ajax? Si occupa della maggior parte del codice/lavoro disordinato. – Bryan

+0

Non ho assolutamente idea di cosa sia jQuery ... Ill Google e proviamo a scoprirlo un po 'di più. – mrbunyrabit

+4

@Bryan Prima di utilizzare una libreria, scopri come farlo. Lo zucchero dovrebbe essere aggiunto dopo aver preso la tazza di tè. – Zirak

risposta

41

Come già detto Jordan devi postare la variabile javascript sul tuo server prima che il server possa gestire il valore. Per fare ciò puoi programmare una funzione javascript che invia un modulo, oppure puoi usare ajax/jquery. jQuery.post

Forse l'approccio più semplice per voi è qualcosa di simile

function myJavascriptFunction() { 
    var javascriptVariable = "John"; 
    window.location.href = "myphpfile.php?name=" + javascriptVariable; 
} 

Sul myphpfile.php è possibile utilizzare $_GET['name'] dopo che il javascript è stato eseguito.

saluti

+4

L'approccio * easy * è spesso anche l'approccio errato. – rlemon

+2

Signore, la tua risposta ha funzionato per me! Grazie! ho commesso l'errore di inserire il tuo script proprio così (senza la funzione per qualche motivo), quindi una pagina aggiornata come una bestia. ma l'ho aggiunto a una funzione proprio come l'avevi e ha funzionato! Grazie !!! – mrbunyrabit

+1

Nessun problema: assicurati di proteggere il tuo sito dagli attacchi/script cross-site. Un'ulteriore domanda per te: Perché devi usare javascript per questo approccio? Potresti anche usare un link my link - Mi interessano solo :-) – Grrbrr404

60

PHP viene eseguito sul server e Javascript viene eseguito sul client, quindi non è possibile impostare una variabile PHP uguale a una variabile Javascript senza inviare il valore al server. È possibile, tuttavia, impostare una variabile Javascript per eguagliare una variabile PHP:

<script type="text/javascript"> 
    var foo = '<?php echo $foo ?>'; 
</script> 

Per inviare un valore Javascript per PHP avresti bisogno di usare AJAX. Con jQuery, sarebbe simile a questa (esempio più semplice possibile):

var variableToSend = 'foo'; 
$.post('file.php', {variable: variableToSend}); 

Sul server, si avrebbe bisogno di ricevere la variabile inviato nel post:

$variable = $_POST['variable']; 
+2

Perché il downvote? Questa è un'ottima risposta ... –

+3

Cosa c'è di sbagliato in questa risposta? –

+1

So che sto facendo qualcosa di sbagliato .... Non so cosa ... Ecco come ho inserito questo codice ' '' '' allora ottengo questo errore che si tratta di una variabile non definita ... Avviso: Undefined index: variabile (il supporto php) minima idea di cosa sto facendo di sbagliato? – mrbunyrabit

3

Dipende dal modo in cui si comporta la tua pagina. Se vuoi che questo accada in modo asincrono, devi usare AJAX. Prova "jQuery post()" su Google per trovare alcuni tut.

In altri casi, se ciò accade quando un utente invia un modulo, è possibile inviare la variabile in un campo nascosto o aggiungere ?variableName=someValue" alla fine dell'URL che si sta aprendo.:

http://www.somesite.com/send.php?variableName=someValue 

o

http://www.somesite.com/send.php?variableName=someValue&anotherVariable=anotherValue 

In questo modo, da PHP è possibile accedere a questo valore come:

$phpVariableName = $_POST["variableName"]; 

per i moduli che utilizzano il metodo POST o:

$phpVariableName = $_GET["variableName"]; 

per moduli utilizzando il metodo GET o l'append a metodo url che ho menzionato sopra (querystring).

+1

Perché minimizzare quasi ogni risposta? Se guardi il tempo del post, puoi vedere che probabilmente abbiamo iniziato a scrivere tutti allo stesso tempo. Penso che alcune risposte siano fantastiche come Squeegy si è espressa nella risposta di Jordam Brown. – rcdmk

+0

per richiedere all'OP di 'installare' e usare jQuery per una semplice chiamata AJAX. – PeeHaa

+0

Perché no? Prova a spiegare a un nuovo utente come eseguire una chiamata AJAX crossbrowser in puro JavaScript in meno di una pagina. – rcdmk