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

AJAX Discussion :

[AJAX] AJAX affichage DIV avec nom dynamique


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Points : 24
    Points
    24
    Par défaut [AJAX] AJAX affichage DIV avec nom dynamique
    Bonjour à tous,

    Je débute un peu en AJAX, et malheureusement je n'arrive pas à trouver de réponse à mon problème. Je me suis basé sur un exemple W3.

    Je désire activer le contenu d'un tableau dans une DIV, en passant par AJAX pour ne pas rafraîchir tout le contenu, cela fonctionne donc très bien à partir du moment où nous avons une DIV avec le même nom.

    Néanmoins, je désire que par exemple nous ayons plusieurs DIV avec des noms différents mais dont seulement le chiffre final du nom de la DIV change, ainsi dans la logique il suffirait de la changer coté Javascript.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div id="txtHint0"><b></b></div>&nbsp;
    <div id="txtHint1"><b></b></div>&nbsp;
    <div id="txtHint2"><b></b></div>&nbsp;
    <div id="txtHint3"><b></b></div>&nbsp;
    <div id="txtHint4"><b></b></div>&nbsp;
    <div id="txtHint5"><b></b></div>&nbsp;
    <div id="txtHint6"><b></b></div>
    Les liens qui appèlent l'AJAX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <a href="#" onClick="showText(0)">test 0</a>&nbsp;
    <a href="#" onClick="showText(1)">test 1</a>&nbsp;
    <a href="#" onClick="showText(2)">test 2</a>&nbsp;
    <a href="#" onClick="showText(3)">test 3</a>&nbsp;
    <a href="#" onClick="showText(4)">test 4</a>&nbsp;
    <a href="#" onClick="showText(5)">test 5</a>&nbsp;
    <a href="#" onClick="showText(6)">test 6</a>
    Ainsi le numéro envoyé à la fonction pourrait être concaténé avec le nom de la DIV en JS comme par exemple "txtHint"+6. H'ai donc passé STR en paramètre de stateChanged.

    Le code AJAX concerné :
    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
     
    <script language="JavaScript">
    var xmlhttp
     
    function showText(str)
    {
     xmlhttp=GetXmlHttpObject();
     if (xmlhttp==null)
     {
     alert ("Your browser does not support AJAX!");
     return;
     }
     var url="mapage.asp";
     url=url+"?q="+str;
     url=url+"&sid="+Math.random();
     xmlhttp.onreadystatechange=stateChanged(str);
     xmlhttp.open("GET",url,true);
     xmlhttp.send(null);
     }
     
    function stateChanged(str)
    {
    if (xmlhttp.readyState==4)
     {
    document.getElementById("txtHint" + str).innerHTML=xmlhttp.responseText;
    }
    }
     
    function GetXmlHttpObject()
    {
    if (window.XMLHttpRequest)
    {
    return new XMLHttpRequest();
    }
    if (window.ActiveXObject)
    {
    return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
    }
    </script>
    Rien ne se passe quand on clique sur les liens.

    Merci d'avance pour vos interventions, je suis certain qu'il s'agit d'une erreur toute bête !

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlhttp.onreadystatechange=stateChanged(str);
    tu affectes à onreadystatechange non pas ta fonction stateChanged mais le résultat de l'appel de cette fonction
    Tu dois t'arranger pour que stateChanged renvoie une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function stateChanged(str)
       {
          return function() {
            if (xmlhttp.readyState==4)  {
               document.getElementById("txtHint" + str).innerHTML=xmlhttp.responseText;
            }
         };
        }
    ERE

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Effectivement c'est logique !

    Merci cela fonctionne parfaitement bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/07/2009, 12h37
  2. [AJAX] Actualiser un div avec un grand nombre de paramètres
    Par yoshï dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/11/2008, 11h43
  3. [AJAX] Ajax xmlhttpRequest : affichage d'un résultat dans une div
    Par kataboy dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/12/2007, 15h47
  4. checked d'un checkbox avec nom dynamique
    Par Sylvain245 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/11/2005, 11h28
  5. [syntaxe]Creation table avec nom dynamique
    Par ZuZu dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/09/2004, 18h01

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