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.