Constructeur Ajax dans classe javascript

Utilisateur anonyme - 18 juin 2010 à 10:00
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 22 juin 2010 à 20:27
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

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

;O)
0
Rejoignez-nous