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] Appel de plusieurs pages avec Ajax


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut [AJAX] Appel de plusieurs pages avec Ajax
    J'ai un petit soucis...
    J'ai 2 div qui j'aimerai bien charger une function Ajax s�par� sur chaqun des 2 car l'un est ma page principal qui changera tout le temps et l'autre il change uniquement quand il est n�cessaire...
    Mais je n'arrive pas � charger les 2 car le 1er le xhr.status est � 200 mais l'autre est bien au dela (c'est normal je pensse) mais j'aimerai savoir si c'est possible de faire ca ?

    Merci

  2. #2
    Membre �m�rite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par d�faut
    Tu peux le faire.

    Ce qui faut faire attention

    Si tu le fait asynchrome
    -Avoir plusieur instance de ton xhr
    -Faire attention que le serveur ne met pas en cache ta page appeler. Si il met en cache, mettre un timestamp dans le url pour que chaque appel soit diff�rent.

    Non asynchrome
    -Tu enleve tout l'utilit� d'un ajax
    -Back to asynchrome

    montre ton code, on va pouvoir t'aid� a d�bugger alors que sans code c'est assez difficile

    A+ et bonne continuation

  3. #3
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut
    Ok mais je pensse que c'est asynchrome.

    voila mon code
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    function body(){
      compteArebours();
      dirige('accueil', '', 'Le jeu');
      construction();
    }
     
    function getXhr(){
      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("Votre navigateur ne supporte pas les objets XMLHTTPRequest... Merci de mettre à jour Firefox, Opera ou eventuelement Internet Explorer"); 
    	xhr = false; 
      } 
    }
     
    function dirige(lapage, option, titre){
     
      document.getElementById('titre').innerHTML = titre;
     
      getXhr()
      xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
          document.getElementById('jeu').innerHTML = xhr.responseText; 
        }
      }
     
      xhr.open("GET",lapage+".php?"+option,true);
      xhr.send(null);
     
    }
     
    function construction(){
     
      getXhr()
      xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
          document.getElementById('construction').innerHTML = xhr.responseText;
     
        }
      }
     
      xhr.open("GET", "contruction.php",true);
      xhr.send(null);
     
    }
    ma function body() appel sur le body les 2 function construction() et dirige()

  4. #4
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut
    alors ce n'est pas possible ?

  5. #5
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut
    Alors personne n'as jamais fait ca ?

  6. #6
    Expert confirm�

    Avatar de denisC
    Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2005
    Messages
    4 050
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : Service public

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 4 050
    Par d�faut
    Citation Envoy� par shadowbob
    Alors personne n'as jamais fait ca ?
    Si. Visiblement, tu ne comprends pas l'asynchrone. Reflechis � la succession des evenements ayant lieu, et tu te rendras compte que tu cherches � faire faire 2 choses en m�me temps � ton pauvre objet XHR.

    Il y a un probl�me conceptuel dans ton code.

  7. #7
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut
    oui je m'en suis rendu compte mais j'arrive pas � trouver la sollution pour que ca marche...
    Au faite je doit faire 1 objet asynchrone et l'autre synchrone ?
    car la 2nd partie je m'en fiche qu'elle soit plus lente � charger s'est une page secondaire...

  8. #8
    Membre exp�riment�
    Avatar de titoumimi
    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    3 707
    D�tails du profil
    Informations personnelles :
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 707
    Par d�faut
    il faut que tu cr�e deux instances de ton objet, ca devrait marcher mieux ;-)
    Globalement inoffensif
    Merci de respecter les r�gles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  9. #9
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut
    ben ca faudrai m'expliquer je suis quand m�me un d�butant en AJAX

  10. #10
    Membre �m�rite Avatar de Herv� Saladin
    Homme Profil pro
    Ing�nieur d'�tudes en d�veloppement et d�ploiement d'applications
    Inscrit en
    D�cembre 2004
    Messages
    647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d'�tudes en d�veloppement et d�ploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 647
    Par d�faut
    essaye �a :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    function body(){
      compteArebours();
      dirige('accueil', '', 'Le jeu');
      construction();
    }
     
    function getXhr(){
      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("Votre navigateur ne supporte pas les objets XMLHTTPRequest... Merci de mettre à jour Firefox, Opera ou eventuelement Internet Explorer");
       xhr = false;
      }
      return xhr;
    }
     
    function dirige(lapage, option, titre){
     
      document.getElementById('titre').innerHTML = titre;
     
      var xhr_1=getXhr()
      xhr_1.onreadystatechange = function(){
        if(xhr_1.readyState == 4 && xhr_1.status == 200){
          document.getElementById('jeu').innerHTML = xhr_1.responseText;
        }
      }
     
      xhr_1.open("GET",lapage+".php?"+option,true);
      xhr_1.send(null);
     
    }
     
    function construction(){
     
      var xhr_2=getXhr()
      xhr_2.onreadystatechange = function(){
        if(xhr_2.readyState == 4 && xhr_2.status == 200){
          document.getElementById('construction').innerHTML = xhr_2.responseText;
     
        }
      }
     
      xhr_2.open("GET", "contruction.php",true);
      xhr_2.send(null);
     
    }

  11. #11
    Expert confirm�

    Avatar de denisC
    Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2005
    Messages
    4 050
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : Service public

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 4 050
    Par d�faut
    Ou alors, en utilisant un seul objet (en reprenant ton code initial):

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    function body(){
      compteArebours();
      dirige('accueil', '', 'Le jeu');
    }
     
    function getXhr(){
      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("Votre navigateur ne supporte pas les objets XMLHTTPRequest... Merci de mettre à jour Firefox, Opera ou eventuelement Internet Explorer"); 
    	xhr = false; 
      } 
    }
     
    function dirige(lapage, option, titre){
     
      document.getElementById('titre').innerHTML = titre;
     
      getXhr()
      xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
          document.getElementById('jeu').innerHTML = xhr.responseText; 
          construction();
        }
      }
     
      xhr.open("GET",lapage+".php?"+option,true);
      xhr.send(null);
     
    }
     
    function construction(){
     
      getXhr()
      xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
          document.getElementById('construction').innerHTML = xhr.responseText;
     
        }
      }
     
      xhr.open("GET", "contruction.php",true);
      xhr.send(null);
     
    }

  12. #12
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut
    denisC > j'avais d�ja test� ca et ca ne marchais pas en plus c'est pas trop ce que je d�sire faire car je veut que chaqun s'�xecute ind�pendament sans charger l'autre page si l'on d�sire pas...

    Herv� Saladin > j'ai test� mais ca n'as pas l'aire de fonctionner j'ai l'erreur suivant :
    undefinied � la valeur null ou n'est pas un objet.
    ce qui m'aide pas vraiment...
    J'ai test� d'executer qu'un seul code et ca ne lance pas.

    Donc voici mon code avec ta m�thode :

    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
     
    function dirige(lapage, titre){
     
      document.getElementById('titre').innerHTML = titre;
     
      var xhr_1 = getXhr();
      // On défini ce qu'on va faire quand on aura la réponse
      xhr_1.onreadystatechange = function(){
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if(xhr_1.readyState == 4 && xhr_1.status == 200){
          document.getElementById('jeu').innerHTML = xhr_1.responseText; 
        }       
      }
     
      xhr_1.open('GET',lapage,true);
      xhr_1.send(null);
     
    }
    Merci

  13. #13
    Membre �m�rite Avatar de Herv� Saladin
    Homme Profil pro
    Ing�nieur d'�tudes en d�veloppement et d�ploiement d'applications
    Inscrit en
    D�cembre 2004
    Messages
    647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d'�tudes en d�veloppement et d�ploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 647
    Par d�faut
    - Quelle est la ligne qui bug ? (regarde par rapport au num�ro de la ligne dans le code html qui est renvoy� � ton navigateur, pas dans le code source)

    - tu as bien pens� � rajouter la ligne : "return xhr;" dans la fonction getXhr() ? (c'est le 'petit detail' qui fait toute la diff�rence ... )

  14. #14
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut
    c'est bien le return que j'avais zap� (d�sol� je ne l'avais pas vu)
    par contre c'est exactement pareil qu'avant

  15. #15
    Membre �m�rite Avatar de Herv� Saladin
    Homme Profil pro
    Ing�nieur d'�tudes en d�veloppement et d�ploiement d'applications
    Inscrit en
    D�cembre 2004
    Messages
    647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d'�tudes en d�veloppement et d�ploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 647
    Par d�faut
    le 1er le xhr.status est � 200 mais l'autre est bien au dela (c'est normal je pensse)
    ==> non ca n'est pas normal, le code 200 correspond � une r�ponse du type "ok" du serveur http, ce qui veut dire que tout a bien march�
    Quel est le code que tu re�oit ? (si tu ne sais pas, affiche le � l'aide d'un alert() comme ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    xhr_2.onreadystatechange = function()
    {
        if(xhr_2.readyState == 4 && xhr_2.status == 200)
        {
          document.getElementById('construction').innerHTML = xhr_2.responseText;     
        }
        else
        {
              alert(xhr_2.status);
         }
      }
    pour info, les codes de r�ponses hhtp (autres que 200) les plus courants sont :
    - 404 (not found), ce qui signifie que la page demand�e n'existe pas
    - 403 (Access denied), ce qui signifie que tu n'a pas les droits pour demander cette page, par exemple a cause d'un htaccess ou quelque chose de ce genre
    - 400 (Bad Request), ce qui signifie que tu as envoy� une requete invalide au serveur

    Tu trouvera tous les codes ici : http://libraries.ucsd.edu/about/tool...nse-codes.html

  16. #16
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut
    Bon ben j'ai saut� unpeu trop vite ce passage du tutorial
    "contruction.php" ben oui manque le S de construction !!
    Merci pour m'avoir sortis de cette impasse

    C'est bon maintenant ca marche...
    Voila ce que c'est de chercher partout sauf � l'endroit ou ca bug

  17. #17
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    116
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par d�faut
    Bon les donn�es semblais se m�langer � un moment mais j'ai mis un setTimeout de 1sec et ca marche trop bien
    merci encors

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [AJAX] dtd charger une page avec ajax
    Par bailamos dans le forum AJAX
    R�ponses: 3
    Dernier message: 02/05/2010, 18h27
  2. R�ponses: 1
    Dernier message: 29/04/2010, 08h23
  3. [AJAX] Affichage de page avec ajax
    Par vladock dans le forum AJAX
    R�ponses: 5
    Dernier message: 16/12/2009, 18h34
  4. [AJAX] Appel de fonction php avec ajax
    Par simoinfonet dans le forum G�n�ral JavaScript
    R�ponses: 6
    Dernier message: 16/05/2008, 11h39
  5. [AJAX] Enchainer plusieurs requ�tes avec Ajax
    Par Bobtop dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 01/08/2006, 08h13

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