In talune situazioni potrebbe essere comodo eseguire codice PHP attraverso Javascript. A prima vista la combinazione di questi due linguaggi potrebbe apparire impossibile: PHP è un linguaggio che opera lato-server mente Javascript lato-client. In che modo, quindi, possiamo eseguire istruzioni PHP “lato-client” con Javascript?.
Quello che sembra difficile a realizzarsi, tuttavia, può essere fatto tranquillamente. E’ bene, tuttavia, sgombrare il campo da equivoci: all’interno di un file Javascript non posso scrivere codice PHP, perchè il secondo possa integragire attraverso il primo serve qualche stratagemma.
Prima di entrare nel vivo del discorso, tuttavia, si rende necessaria una premessa: perché dovrebbe interessarci eseguire PHP da Javascript?
Indice
Perché eseguire PHP attraverso Javascript
Javascript è un linguaggio straordinario: ci consente di interagire con l’utente creando interfacce utente sempre più interattive e coinvolgenti. Poter “lanciare” programmi PHP da Javascript significa, pertanto, introdurre un ancor maggiore livello di interattività, potendo contare anche su operazioni eseguite a livello server.
Ad esempio possiamo leggere e scrivere dati sul database o creare cartelle all’interno del filesystem alla pressione di un pulsante, alla compilazione di un modulo o anche al semplice scrolling di pagina!
Insomma, avere la possibilità di interagire con il server attraverso le meccaniche di Javascript aggiunge molte ed interessanti freccie all’arco dello sviluppatore.
Integrare Javascript all’interno di una pagina PHP
Nulla vieta di utilizzare codice PHP all’interno di uno script lato-client. Si supponga, ad esempio di dover valorizzare una variabile Javascript con un output prodotto da PHP. Per farlo sarà sufficiente inserire direttamente il codice Javascript all’interno dell’output prodotto dalla nostra pagina PHP (ad esempio “index.php”):
<script type="text/javascript">
var my_var = <?php echo json_encode($my_var); ?>;
</script>
Quanto proposto qui sopra non funzionerà, ovviamente, qualora si cerchi di utilizzare codice PHP all’interno di un Javascript esterno (un file “.js”): in questo caso, infatti, l’interprete PHP non agirà e il codice PHP sarà trattato come del semplice testo.
Eseguire file PHP come se fossero file Javascript
Un trucco per eseguire codice Javascript “potenziato” con PHP consiste nell’includere, all’interno della nostra pagina web, un vero e proprio file PHP richiamandolo attraverso l’attributo src di un tag <script>
in questo modo:
<html>
<head>
<script src="/lato_server.php"></script>
</head>
<body>
</body>
</html>
Così facendo il browser richiamerà il nostro file PHP esattamente come avrebbe fatto con un comune file Javascript. All’interno di quel file, quindi, possiamo svolgere tutte le operazioni di cui abbiamo bisogno e poi produrre un output conforme alle specifiche di Javascript, in questo modo:
<?php
// eseguo le operazioni lato server
// ...
// ...
// ...
// ad esempio posso valorizzare una varibile attraverso dati estratti da un database
$my_var = $rs['campo_db'];
// definizione del Content Type
@header("Content-type: application/javascript");
// produco un output
// ad esempio stampo a video una stringa con document.write()
echo 'document.write(\'' . $my_var . '\');';
?>
Volendo essere più eleganti potremmo impostare un file .htaccess per riscrivere l’estensione del nostro script in “.js” in questo modo:
RewriteEngine On
RewriteRule ^lato_server\.js$ lato_server.php
A questo punto potremo includere il file PHP come fosse un JS:
<script src="/lato_server.js"></script>
Attraverso questa tecnica il nostro file PHP verrà eseguito al caricamento della pagina. Una simile implementazione potrebbe essere idonea in alcuni contesti come, ad esempio, lo sviluppo di sistemi di analytics (in quanto con PHP si potrebbero registrare gli accessi alla pagina web) o al lancio di operazioni pianificate.
Eseguire PHP attraverso AJAX
Grazie alla tecnologia AJAX è possibile effettuare una chiamata asincrona ad un qualsiasi script eventualmente anche recuprandone l’output (che potrà poi essere manipolato lato client)!
Per prima cosa vediamo come sarebbe possibile effettuare una semplice chiamata AJAX ad un file PHP affinchè possano essere svolte determinate operazioni lato-server:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {};
xhr.open('GET', '/lato_server.php');
xhr.send()
Quando questo script verrà eseguito, il browser effettuerà una chiamata al file “lato_server.php” che potrà svolgere i suoi compiti. Nulla vieta di sottoporre l’esecuzione di questo codice al verificarsi di un qualche evento come, ad esempio, la pressione di un pulsante.
Eseguire PHP in modo asincrono con jQuery
Se nel nostro progetto web abbiamo incluso la libreria jQuery l’interazione tra PHP e Javascript sarà ancora più semplice. Volendo riprodurre lo stesso esempio visto poco sopra, con jQuery sarebbe bastato una riga di codice:
$.ajax(
'type': 'GET',
'url': '/lato_server.php'
);
Volendo avremmo potuto anche passare dei parametri al nostro file PHP, in questo modo:
$.ajax(
'type': 'GET',
'url': '/lato_server.php',
'data': 'nome=Mario&cognome=Rossi'
);
Così facendo, nel nostro esempio, abbiamo passato con metodo GET due coppie di chiave valore. Ovviamente tali valori potrebbero essere catturati dinamicamente da un form o ricavati da una qualsivoglia attività compiuta dall’utente.
Ma non solo. Grazie ad AJAX abbiamo anche la possibilità di intercettare un eventuale output prodotto dallo script lato-server per poi manipolarlo lato-cliente, ad esempio:
$.ajax(
'type': 'GET',
'url': '/lato_server.php',
'data': 'nome=Mario&cognome=Rossi',
'success': function(risposta) {
alert(risposta)
}
);
Questo codice cattura l’output prodotto lato-server (ad esempio una stringa di testo del tipo “Ciao Mario Rossi, grazie per esserti registrato al sito!”) e lo mostra all’utente attraverso un alert()
.
Quelli visti sopra sono solo esempi, ma le potenzialità di AJAX sono davvero infinite. Per chi desiderasse approfondire l’argomento consiglio la lettura di questo interessante articolo dedicato all’implementazione di AJAX con jQuery.
Conclusioni
In questo articolo abbiamo visto diverse metodiche attraverso le quali è possibile integrare PHP all’interno di Javascript. La “fusione” di questi due linguaggi consente di risolvere in modo creativo soluzioni apparentemente complesse.