Il codice è diviso in due parti completamente separate, il lato server e il lato client .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Le due parti comunicano tramite richieste e risposte HTTP. PHP viene eseguito sul server e genera codice HTML e forse JavaScript che viene inviato come risposta al client in cui viene interpretato l'HTML e viene eseguito JavaScript. Una volta che PHP ha terminato di inviare la risposta, lo script termina e sul server non accadrà nulla finché non arriva una nuova richiesta HTTP.
Il codice di esempio viene eseguito in questo modo:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Passaggio 1, PHP esegue tutto il codice tra i <?php ?>
tag. Il risultato è questo:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
La file_put_contents
chiamata non ha prodotto nulla, ha semplicemente scritto "+ pippo +" in un file. La <?php echo 42; ?>
chiamata ha prodotto l'output "42", che è ora nel punto in cui si trovava quel codice.
Questo codice HTML / JavaScript risultante viene ora inviato al client, dove viene valutato. La alert
chiamata funziona, mentre la foo
variabile non viene utilizzata da nessuna parte.
Tutto il codice PHP viene eseguito sul server prima ancora che il client inizi a eseguire uno qualsiasi dei JavaScript. Non è rimasto alcun codice PHP nella risposta con cui JavaScript potrebbe interagire.
Per chiamare un codice PHP, il client dovrà inviare una nuova richiesta HTTP al server. Questo può accadere usando uno dei tre metodi possibili:
- Un collegamento, che consente al browser di caricare una nuova pagina.
- Un modulo di invio, che invia i dati al server e carica una nuova pagina.
- Una richiesta AJAX , che è una tecnica Javascript per effettuare una normale richiesta HTTP al server (come 1. e 2.), ma senza uscire dalla pagina corrente.
Ecco una domanda che delinea questi metodi in modo più dettagliato
Puoi anche usare JavaScript per aprire il browser in una nuova pagina usando window.location
o inviando un modulo, emulando le possibilità 1. e 2.
window.open
o caricare una pagina usando un iframe.