Bonjour,
Je suis en train d'écrire une classe ActionScript externe (nommée SQL) servant à la gestion des intéractions XML avec un serveur PhP-MySQL.
L'objet SQL contient une propriété "resultat" qui est un objet XML qui reçoit le XML d'un sendAndLoad.
Pour initialiser cette propriété, j'utilise une fonction getXML que voici :
Ma fonction renvoie un booléen en fonction du résultat de l'opération, qui permettra ensuite de l'extraire en tant que XML, tableau ou chaine de caractères avec les méthodes SQL.asString(), .asXML() ou .asArray().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public function getXML():Boolean { var XMLtemp:XML = new XML(this.texteRequete); // le XML qu'on envoie au serveur en POST var chargementOK:Boolean = true; this.resultat.onLoad = function (success:Boolean) { if (success) { trace("Fichier bien téléchargé"); if(this.resultat.status != 0) // Si le XML est mal formé chargementOK = false; } else { trace("Fichier mal récupéré!"); chargementOK= false; } }; XMLtemp.sendAndLoad("http://localhost/monfichier.php", this.resultat); // Envoi de la requête au serveur qui va renvoyer un résultat return chargementOK; }
Mon problème : la méthode XML.load() est asynchrone, ce qui fait que l'on passe directement à "return chargementOK" avant même que le XML ne soit chargé correctement. Hors, évidemment, comme les méthodes asString, asXML et asArray se servent de cette fonction getXML, elles renvoient toutes des erreurs.
J'ai bien essayé de mettre un while(this.resultat.loaded != true) mais j'obtiens une boucle infinie :-/
Si quelqu'un a une idée, je lui en serais très reconnaissant!
Partager