Requête asynchrone (comment attendre ?)

Requête asynchrone (comment attendre ?) - HTML/CSS - Programmation

Marsh Posté le 20-08-2010 à 23:38:56    

Bonjour,

 


je cherche à réaliser un script en js qui permet à un utilisateur de s'authentifier à partir d'un service web.

 


Voilà le code que j'obtiens

 
Code :
  1. <script type="text/javascript">
  2.  function authentifier(login, motDePasse) {
  3.   function authentifierResponse(response) {
  4.    return response.getReturn();       
  5.   }
  6.   function onerror(errorNum, errorText) {
  7.        alert('error ' + errorText);
  8.   }
  9.   var authentifierProxy = new service_AuthentificationServicePortType ();
  10.   authentifierProxy.authentifier(authentifierResponse, onerror, login, motDePasse);
  11.  }     
  12.   alert(authentifier("Exhortae", "555555" ));
  13.  </script>
 

Ces 2 lignes

 
Code :
  1. var authentifierProxy = new service_AuthentificationServicePortType ();
  2.   authentifierProxy.authentifier(authentifierResponse, onerror, login, motDePasse);
 

servent à créer un proxy puis appeler une méthode qui contacte le services web de manière asynchrone.

 

La fonction callback authentifierResponse reçoit la réponse du service web (true or false).

 

Le soucis que j'ai c'est dans la ligne

 
Code :
  1. alert(authentifier("Exhortae", "555555" ));
 


elle affiche bien entendue undefined parceque la fonction callback n'a pas le temps de renvoyer le résultat que alert à déjà fais son boulot.

 

Je débute en javascript et en ajax donc j'ai vraiment du mal à trouver une solution à mon problème. Comment ne renvoyer le résultat qu'une fois que mon web service à répondu.

 

Merci

 


PS : je précise qu'en arrière plan c'est bien l'objet XMLHttpRequest qui est utilisé (dans un fichier .js) mais je préfère ne pas y toucher.


Message édité par exhortae le 20-08-2010 à 23:40:07
Reply

Marsh Posté le 20-08-2010 à 23:38:56   

Reply

Marsh Posté le 21-08-2010 à 14:30:46    

Dans ta fonction authentifier(), tu déclares 2 fonctions, qui seront donc déclarées à chaque exécution. Je te conseille de les sortir de ta grosse fonction.
 
Sinon, même réponse que pour beaucoup, inutile de réinventer la roue, il existe des bibli toutes faites comme jquery, où tu peux faire des requêtes ajax facilement, et intercepter n'importe quel état.
Jquery vaincra !  [:yeah]

Reply

Marsh Posté le 21-08-2010 à 18:49:53    

Pascal le nain a écrit :

Dans ta fonction authentifier(), tu déclares 2 fonctions, qui seront donc déclarées à chaque exécution. Je te conseille de les sortir de ta grosse fonction.

 

:jap:

 
Citation :

Sinon, même réponse que pour beaucoup, inutile de réinventer la roue, il existe des bibli toutes faites comme jquery, où tu peux faire des requêtes ajax facilement, et intercepter n'importe quel état.
Jquery vaincra !  [:yeah]

 


Pas le temps malheuresement pour apprendre un nouveau framework, une solution sale fera l'affaire  :o

Message cité 1 fois
Message édité par exhortae le 21-08-2010 à 18:50:29
Reply

Marsh Posté le 22-08-2010 à 21:21:23    

exhortae a écrit :


 
 
Pas le temps malheuresement pour apprendre un nouveau framework, une solution sale fera l'affaire  :o


 
c'est ce qu'on se dit toujours mais vu qu'avec jquery ou prototype tu l'aurais fait en 5mn chrono je pense que tu avais largement le temps d'aprendre :) d'ailleurs pour ton probleme tu aurais eu juste a définir de declencher ton alert lors du callback.
 
sinon un peu HS, le transfert du login/mdp en javascript? fait plutot un call WS apres le submit de ton form ca sera plus simple et tu n'aurais pas a apprendre un nouveau framework :)


---------------
Plop !
Reply

Marsh Posté le 22-08-2010 à 23:30:58    

pop-pan a écrit :


 
c'est ce qu'on se dit toujours mais vu qu'avec jquery ou prototype tu l'aurais fait en 5mn chrono je pense que tu avais largement le temps d'aprendre :) d'ailleurs pour ton probleme tu aurais eu juste a définir de declencher ton alert lors du callback.
 
sinon un peu HS, le transfert du login/mdp en javascript? fait plutot un call WS apres le submit de ton form ca sera plus simple et tu n'aurais pas a apprendre un nouveau framework :)


 
 
Franchement après avoir appris le javascript en 24 heures, j'aurais jamais eu la volonté de me mettre à jquery (j'ai vu un peu, c'est clair que ça a l'air de simplifier grandement les choses mais tout ce qui est script c'est pas trop ma tasse de thé).
 
En fait le callback que je fais c'est le seul moyen d'avoir la réponse de mon web service. Le proxy  que je génère avec le wsdl fonctionne comme ça. Je sais que c'est un truc fais à l'arrache mais ça me permet de pas avoir à parser la réponse soap.
 
En tout cas merci pour les réponses.

Reply

Marsh Posté le 22-08-2010 à 23:52:43    

pas de soucis :)
juste si tu sais que tu va etre confronté a de l'ajax dans un futur proche pense a y jeter un oeil :)


---------------
Plop !
Reply

Sujets relatifs:

Leave a Replay

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