Ajax è una tecnologia, concepita neanche tanto di recente, che stà avendo larga diffusione nell'ultimo periodo grazie anche alla spinta di siti particolarmente importanti come Google che hanno inplementato alcuni loro servizi grazie ad essa.
Uno dei problemi che si trova ad affrontare lo sviluppatore nel momento in cui deve utilizzare Ajax è quello relativo alla dipendenza dall'oggetto XmlHttpRequest; vi sono browser avanzati come Firefox che supportano nativamente l'oggetto in questione, altri software, come per esempio IE6 molto diffuso ma per alcuni aspetti obsoleto, includono XmlHttpRequest supportandolo come fosse un controllo ActiveX.
Come è noto, in IE6 l'uso di controlli ActiveX determina una notifica di sicurezza da parte del browser all'utente in navigazione; ciò può risultare svantaggioso in quanto l'utente potrebbe credere che il proprio sistema sia in pericolo e abbandonare le pagine che aveva intenzione di visitare, in altri casi il codice potrebbe addirittura non funzionare e basta.
Per ovviare ai problemi di compatibilità dei propri script lo sviluppatore ha la possibilità di eliminare il problema alla radice, cioè utilizzare Ajax senza l'oggetto XmlHttpRequest. Per far questo potremmo utilizzare il tag <script>, notoriamente utilizzato per includere file JavaScript, all'interno di un documento ".php" (ad esempio: "str.php") che si occuperà della generazione del codice JS:
<?
$str = "<h1>Stringa!!!!</h1>";
?>
div = document.getElementById('messaggio');
div.innerHTML = '<? echo $str; ?>';
Data quindi una stinga da stampare, il listato prevede la creazione di un <div> che ha come Id "messaggio" il cui compito sarà quello di contenere la stringa stampata a video.
//Controllo sull'URL
url = document.location.href;
xend = url.lastIndexOf("/") + 1;
var base_url = url.substring(0, xend);
function exec (url)
{
//controlla che sia presente http
if (url.substring(0, 4) != 'http')
{
url = base_url + url;
}
//creazione dell'elemento JS
var jsel = document.createElement('SCRIPT');
jsel.type = 'text/javascript';
jsel.src = url;
//l'elemento JS viene appeso per la chiamata di AJAX
document.body.appendChild (jsel);
}
La prima funzione del codice riportato è quella di rilevare l'URL di base; quindi la funzione exec potrà controllare se l'url appartiene o no allo stesso server del file ".js"; viene poi creato un nuovo elemento JS attraverso createElement() e impostato l'attributo src dell'elemento JS; infine viene caricato il file riferito all'elemento JS.
<html>
<head>
<title>Ajax senza l'oggetto XmlHttpRequest</title>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<div id="messaggio">
</div>
<input type="button" onclick="exec ('str.php');"
value="Mostra la stringa" />
</body>
</html>
Per eseguire il test dello script sarà ora sufficiente clickare sul pulsante che comparirà al caricamento della pagina