Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2958 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Ajax en asychrone

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ajax en asychrone

n°1462637
darkkrab
Posté le 22-10-2006 à 22:53:57  profilanswer
 

Ajax gèle le navigateur parce qu'il est utiliser en asynchrone. Comment faire pour que la fonction stoppe après un délai? Parce que si la requête gèle le navigateur pendant plus de 5 secondes, c'est vraiment trop long.
 

Code :
  1. function file(fichier)
  2.      {
  3.      if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
  4.      else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  5.      else return(false);
  6.      xhr_object.open("GET", fichier, false);
  7.      xhr_object.send(null); 
  8.      if(xhr_object.readyState == 4) return(xhr_object.responseText);
  9.      else return(false);
  10.      }

mood
Publicité
Posté le 22-10-2006 à 22:53:57  profilanswer
 

n°1463533
kirua_sama
Learn sciences with senses
Posté le 23-10-2006 à 21:01:12  profilanswer
 

tu pourrais pas utilise un timeout?


---------------
“L'éducation est l'arme la plus puissante que l'on puisse utiliser pour changer le monde”
n°1463604
sigmar_
Posté le 23-10-2006 à 22:32:09  profilanswer
 

Salut,
Essaie  

Code :
  1. var xhr_object = null;
  2. function file(fichier){
  3.   ...
  4.   ...
  5.   xhr_object.onreadystatechange = masuperfonction;
  6.   xhr_object.open("GET", fichier, false);
  7.   xhr_object.send(null);
  8. }
  9. function masuperfonction(){
  10.   if(xhr_object.readyState == 4 && xhr_object.status == 200){
  11.   //fais ce que tu veux ici avec xhr_object.responseText
  12.  
  13. }

n°1463672
darkkrab
Posté le 24-10-2006 à 01:51:49  profilanswer
 

kirua_sama : Où ?
 
sigmar_ : Rien de neuf, si ce n'est que la vérification du code de la réponse du serveur.

n°1463693
flo850
moi je
Posté le 24-10-2006 à 07:58:24  profilanswer
 

si ca bloque le navigateur, tu es en mode synchrone
 
remplace xhr_object.open("GET", fichier, false);
par  
xhr_object.open("GET", fichier, true);
 

n°1463700
sigmar_
Posté le 24-10-2006 à 08:34:25  profilanswer
 

My bad, j'avais copié/collé ton code.
Comme dit flo850 sinon.
Note que mon "si ce n'est" est utile.

n°1464992
darkkrab
Posté le 25-10-2006 à 18:05:58  profilanswer
 

Ça ne me dérange pas que le navigateur gèle pendant un instant, je veux juste qu'il ne gèle pas plus de 5 secondes. Et je ne peux pas me mettre en asychrone (pardonner moi l'erreur dans le titre), parce que la variable est reprit dans un script, le script étant en attente d'une réponse pour finaliser son action. Ce que je veux en fait, c'est afficher un message d'erreur après le délai de 5 secondes de gel dépasser.
 
Merci de m'aider.

n°1465035
flo850
moi je
Posté le 25-10-2006 à 20:10:30  profilanswer
 

tu fais ta requete en asynchrone
 
puis  ,tu fait une boucle:
 
boucle : Si la reponse est prete ?  
                 alors traitement de la reponse
                 sinon est ce que j'ai deja attendu 5s ?  
                           alors message d'erreur :/  
                           non alors attendre 1s et on repart pour un tour de boucle

n°1465327
jlbo4
Posté le 26-10-2006 à 11:19:35  profilanswer
 

flo850 a écrit :

tu fais ta requete en asynchrone
 
puis  ,tu fait une boucle:
 


 
Pas sur que ca réponde a sa demande : Le sleep n'existe pas en javascript à ma connaissance donc pour le faire il faut encore un timer. Le problème d'utilisation séquentielle de la variable reste par conséquent posé non puisqu'on reste dans un fonctionnement événementiel ?  
 
Pour ma part j'ai choisi de faire de l'asynchrone en "bloquant" graphiquement l'interaction sur la page mais l'exploitation du résultat de la commande AJAX se fait dans un handler.
 
Je suis preneur d'une solution "séquentielle" si quelqu'un a mais je ne vois pas comment ...
 
 
 

n°1465459
darkkrab
Posté le 26-10-2006 à 14:53:45  profilanswer
 

Il va falloir que tu me montre ça flo850, une boucle avec pause dans une seule fonction conservant les returns pour la valeur retournée.   :sweat:

mood
Publicité
Posté le 26-10-2006 à 14:53:45  profilanswer
 

n°1471096
darkkrab
Posté le 06-11-2006 à 14:09:12  profilanswer
 

Dans :

Code :
  1. var k=0;
  2. function file(fichier)
  3. {
  4. if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
  5. else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  6. else return(false);
  7. xhr_object.open("GET", fichier, true);
  8. xhr_object.send(null);
  9. k=0;var timer = setInterval("if(xhr_object.readyState==4 && xhr_object.status==200){document.title=k;alert(xhr_object.responseText);clearInterval(timer)};else{k++;document.title=k};",1);
  10. }

Je ne peux même pas remplacer le "alert" par un "return" parce qu'il est trop tard.
Que faire?  :(

n°1471118
jlbo4
Posté le 06-11-2006 à 14:53:01  profilanswer
 

darkkrab a écrit :

Dans :

Code :
  1. var k=0;
  2. function file(fichier)
  3. {
  4. if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
  5. else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  6. else return(false);
  7. xhr_object.open("GET", fichier, true);
  8. xhr_object.send(null);
  9. k=0;var timer = setInterval("if(xhr_object.readyState==4 && xhr_object.status==200){document.title=k;alert(xhr_object.responseText);clearInterval(timer)};else{k++;document.title=k};",1);
  10. }

Je ne peux même pas remplacer le "alert" par un "return" parce qu'il est trop tard.
Que faire?  :(


n°1471120
jlbo4
Posté le 06-11-2006 à 14:55:12  profilanswer
 

Pardon pour le post inutile (erreur de manip)
 
A ma connaissance, il est impossible de faire un "return" parce que le code ne peut pas être séquentiel en asynchrone. Il faut donc remplacer le alert par une deuxième fonction qui traite le responseText et répercute les modifications dans l'écran.

n°1471149
darkkrab
Posté le 06-11-2006 à 15:40:31  profilanswer
 

Je sais que je pourrais le faire avec un "innerHTML" par example, mais j'aimerais avoir l'expertise de plusieurs personnes, question de voir ce qui est possible.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Ajax en asychrone

 

Sujets relatifs
Vérifier qu'un site répond (en Javascript - AJAX ?)Activer JS dans une page appelée en Ajax
redirection javascript avec ajaxDu JS dans la page appelée avec AJAX
AJAX Scriptaculous : Updater des blocs DIVAJAX, renvoi de données
[JAVA] Framework AjaxAjax : responseText ne charge pas les accents ni une carte google
[Ajax de débutant] : problème avec l'attribut status ?!Problème de compatibilité script AJAX/IE
Plus de sujets relatifs à : Ajax en asychrone


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR