Constructeur Ajax dans classe javascript

Signaler
Messages postés
224
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 septembre 2014
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,

Je cherche à créer des classes javascript avec deux constructeurs. L'un d'eux est un à partir objet documentElement (facile).
Pour l'autre constructeur, j'ai besoin de créer un objet xmlhttprequest qui va récupérer les informations sur le serveur et appelle le premier constructeur.

Un truc du genre :

function Country()
{
    var ID;
    var Name;
    var Code;

    this.LoadFromXML = function(XMLObject)
    {
        this.ID = (XMLObject.getElementsByTagName("ID_E_COUNTRY")[0].firstChild != null) ? XMLObject.getElementsByTagName("ID_E_COUNTRY")[0].firstChild.nodeValue : "";
        this.Name = (XMLObject.getElementsByTagName("NAME")[0].firstChild != null) ? XMLObject.getElementsByTagName("NAME")[0].firstChild.nodeValue : "";
        this.Code = (XMLObject.getElementsByTagName("CODE")[0].firstChild != null) ? XMLObject.getElementsByTagName("CODE")[0].firstChild.nodeValue : "";

    }

    this.LoadFromXHR = function(SessID, ID)
    {
        var xmlHttp = GetXmlHttpObject(); 
var URL = "PHP/CountryInfos.php?PHPSESSID=" + SessID;
var QUERY = "ID=" + ID;
var METHOD = "POST";

if (xmlHttp == null) 
{ 
    alert("Votre navigateur ne supporte pas les requêtes HTTP."); 
    return false; 
}			    
xmlHttp.onreadystatechange = function()
{ 
    if (xmlHttp.readyState 4 || xmlHttp.readyState "complete")
    {           	
                  var XmlDoc = xmlHttp.responseXML.documentElement;
  if(XmlDoc != null)
  {
for (i = 0; i < XmlDoc.getElementsByTagName("COUNTRY").length; i++)
{
var Objet = XmlDoc.getElementsByTagName("COUNTRY")[i];
this.LoadFromXML(Objet);
        }		
          }        	
     }
        }
xmlHttp.open(METHOD, URL, true);
if(METHOD == 'POST')
{
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
}
xmlHttp.send(QUERY); 
return true;
    }
}


Le problème vient du
this.LoadFromXML(Objet);
apparement, dans ce cas this désigne le xmlHttpRequest et non ma classe.

Comment faire pour appeler ma fonction ?

Merci d'avance.

1 réponse

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
problème de closure, plus connu sous le nom de binding, voir du coté des méthodes call ou apply

;O)