[JavaScript] Faire retourner une fonction qui utilise XmlHttpRequest

Faire retourner une fonction qui utilise XmlHttpRequest [JavaScript] - HTML/CSS - Programmation

Marsh Posté le 04-08-2008 à 10:28:09    

Bonjour,
 
désolé pour le titre pas très clair, mais je fais mes premiers pas en JavaScript et je suis pas sûr de bien avoir compris son fonctionnement.
 
Je travaille sur GoogleMaps : j'ai des marqueurs qui représentent des arrêts de bus.
Quand on clique sur un marqueur ça fait appel à un Web Service qui renvoie les prochains bus qui vont passer à l'arrêt cliqué.
 
Donc dans mon GEvent.addListener (ça permet de réagir au clic sur un marqueur) j'appelle la fonction connexionWS (dont le code est présenté ci dessous) qui se connecte au web service. Le soucis c'est que je ne parviens pas à faire retourner cette fonction : j'aimerais qu'elle me retourne un tableau d'Arrets*, mais malgré toutes mes tentatives je me retrouve avec un 'undefined' en retour.
 
Pourtant quand je fais un alert dans la fonction connexionWS, les infos sont bien là, c'est juste que j'arrive pas à les voir en dehors de la fonction.
 
Si quelqu'un a une idée  :jap:  
 
Le code en question :  
 

Code :
  1. function connexionWS(adressews)
  2. {
  3.     var req = GXmlHttp.create();
  4.     req.open("GET", adressews, true);
  5.     req.onreadystatechange = function()
  6.     {
  7.       if (req.readyState === 4 && req.status < 299)
  8.       {
  9.           var docXml = GXml.parse(req.responseText);
  10.           // on crée des variables de type Array, qui recoivent comme valeur les balises choisies dans le document xml
  11.           var destination = docXml.getElementsByTagName('ax21:codGirouette');
  12.           var min = docXml.getElementsByTagName('ax21:horaire');
  13.           var ligne = docXml.getElementsByTagName('ax21:nuLiCo');
  14.           var service = docXml.getElementsByTagName('ax21:vehicule');
  15.           var numParc = docXml.getElementsByTagName('ax21:parc');
  16.            var tabloArrets = new Array();
  17.           for (var n = 0; n < min.length; n++)
  18.           {
  19.                var unArret = new Arret (destination[n].firstChild.nodeValue, min[n].firstChild.                     nodeValue, ligne[n].firstChild.nodeValue, service[1].firstChild.nodeValue, numParc[1].               firstChild.nodeValue) ;
  20.                tabloArrets[n] = unArret ;
  21.           }
  22.       }
  23.     }
  24.     req.send(null);
  25. }


 
PS A noter qu'il n'y a aucun return dans ce code, mais j'ai bien entendu essayé avec ;)
 
* en fait l'objet Arret est mal nommé : il décrit un passage de bus à un arrêt donné.


---------------
Freenet *** Mon Feed-Back reloaded
Reply

Marsh Posté le 04-08-2008 à 10:28:09   

Reply

Marsh Posté le 04-08-2008 à 22:56:23    

Je n'ai pas la réponse à ta question, par contre je te conseille FireBug, qui est une extension pour FireFox, et qui te permettra de voir ce qu'il se passe dans ton code et tes requetes ajax :)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 05-08-2008 à 09:40:21    

Salut,
 
j'ai déjà Firebug, mais il ne m'indique pas d'erreur !
 
J'ai réussit à contourner le soucis avec une bidouille pas très propre : en gros je mets tout le code que je veux exécuter dans cette fonction, mais pour la lisibilité j'aurais bien voulu avoir ça dans une fonction déportée.
 
Après 2 mois sur un dev Java, passer à JavaScript ça laisse un léger goût amer je trouve  [:tinostar]


---------------
Freenet *** Mon Feed-Back reloaded
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed