Dunque, studiando ajax prima mi sono sviluppato semplici test tramite funzioni separate. Ora sto cercando di racchiudere le funzioni all'interno di un oggetto tramite questo codice:
codice:
function xmlHttpObject()
{
var xmlObj;
try {xmlObj= new ActiveXObject("Msxml2.XMLHTTP");}
catch (e)
{
try{xmlObj= new ActiveXObject("Microsoft.XMLHTTP");;}
catch (oc){xmlObj = null;}
}
if(!xmlObj && typeof XMLHttpRequest != "undefined")
{
xmlObj = new XMLHttpRequest();
}
this.obj = xmlObj;
this.innerXML = null;
this.elaborateFunction = null;
this.callback = function callback()
{
if (this.obj.readyState == 4)
{
if (this.obj.status == 200)
{
this.innerXML = this.obj.responseXml;
eval(this.eleborateFunction);
}
else
{
this.error = "Errore nel caricamento dati: "+ this.obj.statusText;
}
}
}
this.open = function open(url,method)
{
this.obj.onreadystatechange = this.callback;
if (method.toLowerCase() == "post")
{
this.obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
this.obj.open("POST", url, true);
}
else
{
this.obj.open("GET", url, true);
}
this.obj.send(null);
}
return (this);
}
Il mio intento è creare una classe riutilizzabile in modo da avere nella variabile innerXml l'xml generato dalla pagina lato server per poi poterla rielaborare tramite la funzione internta elaborateFunction.
In questo modo lanciando l'oggetto si è liberi di manipolare l'output xml in maniera distaccata tramite proprie funzioni.
il problema (sara' la giornata piovosa) mi sono arenato
nella parte in grassetto: this.obj.onreadystatechange = this.callback
assegno la funzione interna callback al caricamento dell'xml del oggetto Xml Request.
All'entrata della funzione l'oggetto perde il suo valore e firefox mi riporta un laconico this.obj.status has no properties.
Nel frattempo mi ci continuo a rompere la testa ma se qualcuno ha un suggerimento è ben accetto.