IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Ajax requêtes asynchrones simultanées


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 22
    Points
    22
    Par défaut [AJAX] Ajax requêtes asynchrones simultanées
    Bonsoir,

    J'ai un problème de requêtes AJAX simultanées. En fait, j'aimerais qu'elles soient simultanées mais elles ne le sont pas du tout bawling

    Je bosse sur une application complexe, j'ai donc extrait le code qui pose problème (et j'ai testé ce code seul, en vain):

    Code Javascript:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    function getXhr(){
      var xhr;
      if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
      else if(window.ActiveXObject){
          try {
              xhr = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
              xhr = new ActiveXObject("Microsoft.XMLHTTP");
          }
      }
      else {
          alert("Marche po!");
          xhr = false;
      }
      return xhr;
    }
     
    function testAjax(){
        	var httpRequest1 = getXhr();
            httpRequest1.overrideMimeType('text/plain');
        	httpRequest1.onreadystatechange = function() { if (httpRequest1.readyState == 4) alert("Fin requete 1"); };
        	httpRequest1.open('GET', "http://chemin/page.php", true);
        	httpRequest1.send(null);
     
        	var httpRequest2 = getXhr();
            httpRequest2.overrideMimeType('text/plain');
        	httpRequest2.onreadystatechange = function() { if (httpRequest2.readyState == 4) alert("Fin requete 2"); };
        	httpRequest2.open('GET', "http://chemin/page.php", true);
        	httpRequest2.send(null);
    }

    La page PHP, appelée par les requêtes AJAX, met 5 secondes avant de répondre (sleep(5)). Ma fonction Javascript "testAjax()" est appelée simplement en cliquant sur un lien.

    Comportement attendu (espéré!):
    - Attente 5 secondes
    - Affichage du premier "alert"
    - Clic immédiat sur OK pour fermer le "alert"
    - Affichage immédiat du second "alert"

    Comportement constaté (IE6, IE7, FF2):
    - Attente 5 secondes
    - Affichage du premier "alert"
    - Clic immédiat sur OK pour fermer le "alert"
    - Attente 5 secondes (gr...)
    - Affichage du second "alert"

    Conclusion: Mes deux requêtes Ajax ne sont pas exécutées simultanément, alors que je pensais avoir fait le nécessaire pour que ce soit le cas... Ayant testé sur plusieurs navigateurs, et sur plusieurs machines, je pense que le problème ne vient pas d'un quelconque problème de configuration, mais bel et bien de mon code source...

    Si quelqu'un pouvait m'aider, je lui en serais très reconnaissant lol

    Merci !
    Jibé

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Points : 160
    Points
    160
    Par défaut
    Salut,

    As-tu essayé de lancer 2 fois ta fonction ? Du styleOù dans ta fonction il y a qu'une requête.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Je te conseillerais vivement d'utiliser firebug et console.log() pour afficher tes messages de debug...

    Dans le principe, tes requetes devraient effectivement se faire en asynchrone, cependant il me semble avoir lu que alert() posait quelques problèmes par rapport à ça
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

Discussions similaires

  1. [HttpClient] - Gestion des requêtes asynchrones en Ajax
    Par renotm dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 19/08/2010, 11h34
  2. [AJAX] Ajax multi requêtes VS Hebergement
    Par zhell dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/04/2007, 18h06
  3. [AJAX] AJAX Asynchrone ne fonctionne pas
    Par linar009 dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 16/03/2007, 10h11
  4. [AJAX] Annuler une requête asynchrone server side
    Par Matthieu Bissat dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/01/2007, 20h42
  5. [AJAX] Ajax requêtes multiples
    Par Teufboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2006, 18h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo