|
Per fare una richiesta HTTP da JavaScript è necessario un'aggetto che svolga questa funzione.
Quindi da Javascript è necessario istanziare una classe.
Ma quale classe?
Una classe che permettesse di svolgere funzioni di questo tipo fu prima introdotta da Microsoft come ActiveX.
L'oggetto in questione è XMLHTTP.
Successivamente altri browser (Mozilla, Safari ed altri) implementarono una classe XMLHttpRequest che supportasse
metodi e proprietà dell'oggetto ActiveX di casa Microsoft.
Questo ha portato che per fare una richiesta HTTP bisogna distinguere il codice a seconda del browser che fà la richiesta.
Faccio una richiesta HTTP:
xmlHttp=GetXmlHttpObject(stateChanged)
Chiamo la funzione "GetXmlHttpObject" che crea l'oggetto richiesta, passandogli come parametro
la funzione che gestirà la risposta.
Funzione di Gestione della risposta:
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState==
"complete")
{
document.getElementById("txt").innerHTML=
xmlHttp.responseText
}
}
Funzione che restituisce l'oggetto richiesta:
function GetXmlHttpObject(handler)
{
var objXmlHttp=null
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera")
return;
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP"
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP"
}
try
{
objXmlHttp=new ActiveXObject(strName)
objXmlHttp.onreadystatechange=handler
return objXmlHttp
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled")
return
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest()
objXmlHttp.onload=handler
objXmlHttp.onerror=handler
return objXmlHttp
}
La funzione sopra restituisce l'oggetto richiesta "objXmlHttp".
L'oggetto risposta viene restituito in xmlHttp (vedi la prima riga di codice)
Da questo momento in poi si può lavorare con questo oggetto.
Ad esempio si possono formulare le richieste.
Per fare le richieste si possono chiamare i metodi open() e send() della classe di richiesta HTTP nel seguente modo:
var url="paginaelaborante.php?sid=" + (eventuali parametri)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
...
Vi fornirò in seguito alri riferimenti di tutorial su WebSpazio.it per approfondire alcuni temi che ho tralasciato.
|