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 et window.location.replace


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut [AJAX] Ajax et window.location.replace
    Bonjour,

    Je rencontre un problème avec l'utilisation de la fonction window.location.replace() suite à une mise à jour du contenu d'un div avec de l'Ajax.

    Je m'explique : j'affiche une interface appelée dossier.inc (fichier qui est passé en paramètre à ma classe CInterface, mais cela n' a pas d'importance). Ce fichier contient plusieurs div dont, lors du premier affichage, le diplay est à none. Sur le onclick d'une image, je passe le display du div concerné à block et y affiche de l'information contenant elle-même des liens vers d'autres interfaces.

    Lorsque je clique sur un de ces liens, j'affiche alors l'interface concernée qui contient elle-même un lien appelé "Retour" dans lequel j'utilise la fonction javaScript window.location.replace(). Cette fonction me permet bien de réafficher le fichier "dossier.inc" mais (évidemment car recharge l'interface) avec tous les div avec le display à none.

    Comment faire pour que les div dont j'ai passé le display à block reste affichés lorsque je réaffiche l'interface "dossier.inc"? Impossible d'utiliser history.back à cause des variables de session.

    Voici ce que donne le code :

    - dans "dossier.inc" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo "<div  class='floatLeft7'>&nbsp;</div>
          <div class='floatLeft5'>&nbsp;</div>
          <div class='floatLeft5' id='boutonAtt$suffixe'><img src='../images/plus.gif' border='0' align='middle' onclick='listeFctAtt($suffixe);'></div>
          <div class='floatLeft40' align='left'>Fonctions attentionnelles</div>
          <div class='floatLeft25'>&nbsp;</div>
          <div class='floatLeft10'>&nbsp;</div>
          <div class='floatLeft7'>&nbsp;</div>
          <div id='divAttention$suffixe' style=\"display='block';\"></div>";
    - dans ma fonction Ajax listeFctAtt($suffixe) :

    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
    function listeFctAtt(suffixe)
     {
      {
       xhrListeFctAtt=getXhr();
       xhrListeFctAtt.onreadystatechange = function()
        {
         if(xhrListeFctAtt.readyState == 4 && xhrListeFctAtt.status == 200)
          {
           document.getElementById("divAttention" + suffixe).innerHTML = xhrListeFctAtt.responseText;
           document.getElementById("boutonAtt" + suffixe).innerHTML = "<img src='../images/moins.gif' border='0' align='middle' onclick='videFctAtt(" + suffixe + ")'>";
           document.getElementById("divAttention" + suffixe).style.display = 'block';
          }
        }
       xhrListeFctAtt.open("POST",'../transferts/majDossier/listeFctAtt.php',true);
       xhrListeFctAtt.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
       xhrListeFctAtt.send("suffixe=" + suffixe);
      }
     }
    -dans mon fichier listeFctAtt.php appelé par ma fonction

    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
    <?php
    session_start();
    header('Content-Type: text/html; charset=utf-8');
    require("../../fichiersInclusion/classes.php");
    $suffixe = $_POST['suffixe'];
     
    $tabAttention = unserialize($_SESSION["tabAttention$suffixe"]);
    $nb = count($tabAttention);
     
    for($cpt = 0; $cpt < $nb; $cpt++)
     {
       $tabDonnees = $tabAttention[$cpt]->getAll();
       
       echo "<div  class='floatLeft7'>&nbsp;</div>
          <div class='floatLeft5'></div>
          <div class='floatLeft10'>&nbsp;</div>
          <div class='floatLeft25'><img src='" . $tabDonnees['icone'] . "' border='0' align='middle'>&nbsp;&nbsp;&nbsp;" . $tabDonnees['dateEve'] . "</div>
          <div class='floatLeft25' onDblClick=\"window.location.href='../transferts/affEve.php?tableau=tabAttention$suffixe&index=$cpt'\">" . $tabDonnees['titre'] . "</div>     
          <div class='floatLeft27'>" . $tabDonnees['prestataire']. "</div>";
     }
    ?>
    - dans mon fichier affEve.php appelé par le précédent script :

    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
    <?php
    require("../fichiersInclusion/classes.php");
    session_start();
     
    if(isset($_GET['nbPere']) && isset($_SESSION['tabObj']))
     {
      $nbPere = $_GET['nbPere'];
      $tabObj = unserialize($_SESSION['tabObj']);
      $obj = $tabObj[$nbPere][0];
     }
    elseif(isset($_GET['tableau']) && isset($_GET['index']))
     {
      $tableau = $_GET['tableau'];
      $index = $_GET['index'];
      $tab = unserialize($_SESSION[$tableau]);
      $obj = $tab[$index];
     }
     
     
    $_SESSION['objet'] = $obj;
     
    $interface = new CInterface($obj->getTitre(), $obj->getFichier(), 1, "");
    $interface->getHeader();
    $interface->getLogo();
    $interface->getTitre();
    $interface->getMenu();
    $interface->getContenu();
    $interface->getSignature();
     
    ?>
    - dans ma classe d'interface CInterface :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href='javascript:window.location.replace(\"http://localhost/psy/transferts/accDoss.php?nb=0\")'>Retour</a>
    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Je viens tout de même d'utiliser history.back au lieu de window.location.replace(), mais le comportement est identique...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Je viens également d'essayer d'utiliser document.referrer mais cela m'affiche alors "http://localhost/psy/transferts/accDoss.php?nb=0"

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "\n    <tr id='trmenu'>
    	                  <td id='tdmenu'>
    	                   <A href='javascript:document.referrer'>Retour</A>
    	                  </td>
    	                 </tr>";

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    En essayant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "\n    <tr id='trmenu'>
    	                  <td id='tdmenu'>
    	                   <A href='" . $_SERVER['HTTP_REFERER'] . "'>Retour</A>
    	                  </td>
    	                 </tr>";
    cela a le même effet que history.back

    Je sèche....

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Il faudrait que l'url de ta page qualifie le contenu, c'est à dire qu'il y aie
    une information dont tu te sert pour initialiser l'état d'affichage de tes divs.

    supposons que tes divs aient des id, par exemple, id1, id2, id3, id4

    tu pourrais avoir des urls pour ta page du genre:

    page.php?div=id2,id4
    ou
    page.php#id2,id4

    et à l'initialisation de ta page tu extrait l'information de l'url en javascript
    et tu fixe le display de tes divs en fonction.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Merci énormément pour ton aide...

    Alors, j'arrive, via un champ hidden, à identifier si mon div est à display none ou block. Mais, vu que mon nombre de div est variable, je ne vois pas comment faire passer en $_GET tous ceux en display block.

    En clair, le code suivant est inclu dans une boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo "<div class='floatLeft7'>&nbsp;</div>
          <div class='floatLeft5'>&nbsp;</div>
          <div class='floatLeft5' id='boutonMem$suffixe'><img src='../images/plus.gif' border='0' align='middle' onclick='listeMem($suffixe);'></div>
          <div class='floatLeft40' align='left'>Mémoire</div>
          <div class='floatLeft25'>&nbsp;</div>
          <div class='floatLeft10'>&nbsp;</div>
          <div class='floatLeft7'><input type='hidden' id='etatDivMem$suffixe' value='0'></div>
          <div id='divMem$suffixe'></div>";
    La value de mon champ 'etatDivMem$suffixe' est à 1 lorsque le div est à display block.

    La variable $suffixe est égale au compteur de ma boucle + 1. Donc, je peux me retrouver avec x div (de trois types différents qui plus est : divAttention$suffixe, divExec$suffixe ou 'divMem$suffixe) à faire passer dans mon url. De quelle manière puis-je faire cela?

  7. #7
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Ben je vois deux approches

    1) soit, au moment du changement de page tu passes les données à l'autre page
    ce qui lui permettra de créer des liens de retour avec les infos

    2) soit au moment de l'affichage masquage des div tu utilise location.replace avec
    un # (ancre) ce qui modifie l'url de la page sans la recharger. et depuis les autres
    page, un bête history.back()

    Je réponds à ta question ? ou c'est la manière de formater les données dans
    l'url qui pose problème ?

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Salut,

    Désolé pour cette réaction tardive, mais j'ai finalement du partir hier et me voilà de retour au turbin...

    En fait, mon problème est double :

    - comment puis-je lister mes différents inputs d'état dont la value est à 1
    - comment passer ce listing (tableau?) dans mon url?

    Merci encore pour ton aide...

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    J'ai finalement réussi à lister mes différents inputs d'état dont la value est à 1, mais je ne parviens pas à passer un tableau créé dans une fonction javascript en paramètre dans l'url. Voici ce que j'ai effectué mais qui ne me donne pas le résultat escompté lors de la lecture dans mon script Php.

    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
    function affEve(urlEve)
     {
      var tabInputs = new Array();
      var tabDisplayBlock = new Array();
     
      //on recupere ds un tableau le nbre d'inputs de l'interface 
      var tabInputs = document.getElementsByTagName('input');
     
      for(var i = 0; i < tabInputs.length; i++)
       {
        if(tabInputs[i].id.indexOf("etatDiv") != -1 && tabInputs[i].value == 1) //on ne s'occupe que des inputs indiquant l'état de display d'un div
         tabDisplayBlock.push(tabInputs[i].id.replace("etatD", "d")); // on liste les divs correspondants aux inputs
       }  
     
      urlEve = urlEve + "&tabDisplayBlock=" + tabDisplayBlock;
      window.location.href = urlEve;  
     }
    Je passe à ma fonction une url que je viens compléter par un tableau. Manifestement, cela n'est pas la bonne solution. Quelqu'un pourrait-il me venir en aide?

    Merci d'avance

  10. #10
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Il faut sérialiser ton tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     urlEve += "&tabDisplayBlock=" + tabDisplayBlock.join(',');

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Bonjour et merci beaucoup à toi marcha,

    Finalement, entre-temps, j'avais fait passer une string (avec des ; comme séparateur entre chaque élément) et j'obtiens enfin quasiment ce que je voulais (de temps à autre, la première branche initialement déployée n'est pas déployée au rechargement de la page bien que je retrouve bien l'id du div en question dans mon tableau, mais cela fera peut-être partie d'un post dans le forum Php).

    Voici donc ce que j'ai fait :

    - dans mon fichier "dossier.inc" :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    //Variables qui serviront à savoir quelles branches étaient ouvertes
        for($i = 0; $i < $cpt; $i++) //Liste des événements pères : affichage de l'icône, de la date de l'événement, du descriptif de l'événement avec un lien pour visualiser le contenu de celui-ci et du prestataire de l'événement
         {
          $tableau[0] = $resuReq4[$i]['id'];
    	    $tabObj[$i][0] = new CObjet($tableau[0]);
          $_SESSION['tabObj'] = serialize($tabObj);
          $tabdonnesObj = $tabObj[$i][0]->getAll();
     
          echo "<div class='floatLeft22'><img src='" . $tabdonnesObj['icone'] . "' border='0' align='middle'>&nbsp;&nbsp;&nbsp;" . $tabdonnesObj['dateEve'] . "</div>
          <div  class='floatLeft25' onDblClick=\"window.location.href='../transferts/affEve.php?nbPere=" . $i . "'\">" . $tabdonnesObj['titre'] . "</div>
          <div  class='floatLeft45'>" . $tabdonnesObj['prestataire'] . "</div>
          <div  class='floatLeft7'>&nbsp;</div>";
     
          $tab[0] = $resuReq4[$i]['id'];
          $resuReq5 = $transaction->select("MYSQL_listeEveFils", $tab);
          $nb = count($resuReq5);
     
          if($nb)
           {
    	      //Un tableau par rubrique 
     
    	      $tabAttention = array();
            $tabExecutives = array();
            $tabMemoire = array();
     
            for($j = 0; $j < $nb; $j++)
             {
              $tableau[0] = $resuReq5[$j]['id'];
    	        $tabObjFils[$j] = new CObjet($tableau[0]);
              //$_SESSION['tabObjFils$suffixe'] = serialize($tabObjFils);
     
              switch($tabObjFils[$j]->getGroupe())
               {
                case 1:
                 $tabAttention[] = $tabObjFils[$j];             
                break;
     
                case 2:
                 $tabExecutives[] = $tabObjFils[$j];
                break;
     
                case 3:
                 $tabMemoire[] = $tabObjFils[$j];             
                break;
               }           
              }     
     
          $suffixe = $i + 1;
     
          if(count($tabAttention) >= 1)
           {
            $_SESSION["tabAttention$suffixe"] = serialize($tabAttention);
     
            echo "<div  class='floatLeft7'>&nbsp;</div>
          <div class='floatLeft5'>&nbsp;</div>
          <div class='floatLeft5' id='boutonAtt$suffixe'><img src='../images/plus.gif' border='0' align='middle' onclick='listeFctAtt($suffixe);'></div>
          <div class='floatLeft40' align='left'>Fonctions attentionnelles</div>
          <div class='floatLeft25'>&nbsp;</div>
          <div class='floatLeft10'>&nbsp;</div>
          <div class='floatLeft7'><input type='hidden' id='etatDivAttention$suffixe' value='0'></div>
          <div id='divAttention$suffixe' style=\"display:\'block\'\">";
     
            if(isset($tabDisplayBlock))
             {
              for($a = 0; $a < count($tabDisplayBlock); $a++)
               {
                if($tabDisplayBlock[$a] == "divAttention$suffixe")
                 echo "<SCRIPT language='Javascript'>listeFctAtt($suffixe);</script>";
               }
             }
     
            echo "</div>";
            }
     
          if(count($tabExecutives) >= 1)
           {
            $_SESSION["tabExecutives$suffixe"] = serialize($tabExecutives);
     
            echo "<div class='floatLeft7'>&nbsp;</div>
          <div class='floatLeft5'>&nbsp;</div>
          <div class='floatLeft5' id='boutonExec$suffixe'><img src='../images/plus.gif' border='0' align='middle' onclick='listeFctExec($suffixe);'></div>
          <div class='floatLeft40' align='left'>Fonctions exécutives</div>
          <div class='floatLeft25'>&nbsp;</div>
          <div class='floatLeft10'>&nbsp;</div>
          <div class='floatLeft7'><input type='hidden' id='etatDivExec$suffixe' value='0'></div>
          <div id='divExec$suffixe' style=\"display:\'block\'\">";
     
            if(isset($tabDisplayBlock))
             {
              for($a = 0; $a < count($tabDisplayBlock); $a++)
               {
                if($tabDisplayBlock[$a] == "divExec$suffixe")
                 echo "<SCRIPT language='Javascript'>listeFctExec($suffixe);</script>";
               }
             }
     
            echo "</div>";
           }
     
          if(count($tabMemoire) >= 1)
           {
            $_SESSION["tabMemoire$suffixe"] = serialize($tabMemoire);
     
            echo "<div class='floatLeft7'>&nbsp;</div>
          <div class='floatLeft5'>&nbsp;</div>
          <div class='floatLeft5' id='boutonMem$suffixe'><img src='../images/plus.gif' border='0' align='middle' onclick='listeMem($suffixe);'></div>
          <div class='floatLeft40' align='left'>Mémoire</div>
          <div class='floatLeft25'>&nbsp;</div>
          <div class='floatLeft10'>&nbsp;</div>
          <div class='floatLeft7'><input type='hidden' id='etatDivMem$suffixe' value='0'></div>
          <div id='divMem$suffixe' style=\"display:\'block\'\">";
     
            if(isset($tabDisplayBlock))
             {
              for($a = 0; $a < count($tabDisplayBlock); $a++)
               {
                if($tabDisplayBlock[$a] == "divMem$suffixe")
                 echo "<SCRIPT language='Javascript'>listeMem($suffixe);</script>";
               }
             }
     
            echo "</div>";
           }
         }
        }
    - dans mon fichiers de fonctions js, les fonctions utilisées :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    function listeFctAtt(suffixe)
     {
      {
       xhrListeFctAtt=getXhr();
       xhrListeFctAtt.onreadystatechange = function()
        {
         if(xhrListeFctAtt.readyState == 4 && xhrListeFctAtt.status == 200)
          {
           document.getElementById("divAttention" + suffixe).innerHTML = xhrListeFctAtt.responseText;
           document.getElementById("boutonAtt" + suffixe).innerHTML = "<img src='../images/moins.gif' border='0' align='middle' onclick='videFctAtt(" + suffixe + ")'>";
           document.getElementById("divAttention" + suffixe).style.display = 'block';
           document.getElementById("etatDivAttention" + suffixe).value = 1;
          }
        }
       xhrListeFctAtt.open("POST",'../transferts/majDossier/listeFctAtt.php',true);
       xhrListeFctAtt.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
       xhrListeFctAtt.send("suffixe=" + suffixe);
      }
     }
     
    function listeFctExec(suffixe)
     {
      {
       xhrListeFctExec=getXhr();
       xhrListeFctExec.onreadystatechange = function()
        {
         if(xhrListeFctExec.readyState == 4 && xhrListeFctExec.status == 200)
          {
           document.getElementById("boutonExec" + suffixe).innerHTML = "<img src='../images/moins.gif' border='0' align='middle' onclick='videFctExec(" + suffixe + ")'>";
           document.getElementById("divExec" + suffixe).innerHTML = xhrListeFctExec.responseText;
           document.getElementById("divExec" + suffixe).style.display = 'block';
           document.getElementById("etatDivExec" + suffixe).value = 1;
          }
        }
       xhrListeFctExec.open("POST",'../transferts/majDossier/listeFctExec.php',true);
       xhrListeFctExec.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
       xhrListeFctExec.send("suffixe=" + suffixe);
      }
     }
     
    function listeMem(suffixe)
     {
      {
       xhrListeMem=getXhr();
       xhrListeMem.onreadystatechange = function()
        {
         if(xhrListeMem.readyState == 4 && xhrListeMem.status == 200)
          {
           document.getElementById("boutonMem" + suffixe).innerHTML = "<img src='../images/moins.gif' border='0' align='middle' onclick='videMem(" + suffixe + ")'>";
           document.getElementById("divMem" + suffixe).innerHTML = xhrListeMem.responseText;
           document.getElementById("divMem" + suffixe).style.display = 'block';
           document.getElementById("etatDivMem" + suffixe).value = 1;
          }
        }
       xhrListeMem.open("POST",'../transferts/majDossier/listeMem.php',true);
       xhrListeMem.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
       xhrListeMem.send("suffixe=" + suffixe);
      }
     }
     
    function videFctAtt(suffixe)
     {
      document.getElementById("boutonAtt" + suffixe).innerHTML = "<img src='../images/plus.gif' border='0' align='middle' onclick='listeFctAtt(" + suffixe + ");'>";
      document.getElementById("divAttention" + suffixe).style.display = 'none';
      document.getElementById("etatDivAttention" + suffixe).value = 0;
     }
     
    function videFctExec(suffixe)
     {
      document.getElementById("boutonExec" + suffixe).innerHTML = "<img src='../images/plus.gif' border='0' align='middle' onclick='listeFctExec(" + suffixe + ");'>";
      document.getElementById("divExec" + suffixe).style.display = 'none';
      document.getElementById("etatDivExec" + suffixe).value = 0;
     }
     
    function videMem(suffixe)
     {
      document.getElementById("boutonMem" + suffixe).innerHTML = "<img src='../images/plus.gif' border='0' align='middle' onclick='listeMem(" + suffixe + ");'>";
      document.getElementById("divMem" + suffixe).style.display = 'none';
      document.getElementById("etatDivExec" + suffixe).value = 0;
     }
     
    function affEve(urlEve)
     {
      var tabInputs = new Array();
      var listeDisplayBlock = "";
     
      //on recupere ds un tableau le nbre d'inputs de l'interface 
      var tabInputs = document.getElementsByTagName('input');
      var longueur = tabInputs.length;
     
      for(var i = 0; i < longueur; i++)
       {
        if(tabInputs[i].id.indexOf("etatDiv") != -1 && tabInputs[i].value == 1) //on ne s'occupe que des inputs indiquant l'état de display d'un div
         listeDisplayBlock = listeDisplayBlock + tabInputs[i].id.replace("etatD", "d") + ";";
       }  
      urlEve = urlEve + "&listeDisplayBlock=" + listeDisplayBlock;
      window.location.href = urlEve;
     }
    - le code permettant d'afficher les événements correspondants à une div particulière (donc trois fichiers dont le code est adapté en fonction de la div)

    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
    <?php
    session_start();
    header('Content-Type: text/html; charset=utf-8');
    require("../../fichiersInclusion/classes.php");
    $suffixe = $_POST['suffixe'];
     
    $tabAttention = unserialize($_SESSION["tabAttention$suffixe"]);
    $nb = count($tabAttention);
     
    for($cpt = 0; $cpt < $nb; $cpt++)
     {
       $urlEve = "../transferts/affEve.php?tableau=tabAttention$suffixe&index=$cpt";
       
       $tabDonnees = $tabAttention[$cpt]->getAll();
       
       echo "<div  class='floatLeft7'>&nbsp;</div>
          <div class='floatLeft5'></div>
          <div class='floatLeft10'>&nbsp;</div>
          <div class='floatLeft25'><img src='" . $tabDonnees['icone'] . "' border='0' align='middle'>&nbsp;&nbsp;&nbsp;" . $tabDonnees['dateEve'] . "</div>
          <div class='floatLeft25' onDblClick='affEve(\"" . $urlEve . "\");'>" . $tabDonnees['titre'] . "</div>     
          <div class='floatLeft27'>" . $tabDonnees['prestataire']. "</div>";
     }
    ?>
    - mon fichier "affEve.php' :

    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
    <?php
    require("../fichiersInclusion/classes.php");
    session_start();
     
    if(isset($_GET['nbPere']) && isset($_SESSION['tabObj']))
     {
      $nbPere = $_GET['nbPere'];
      $tabObj = unserialize($_SESSION['tabObj']);
      $obj = $tabObj[$nbPere][0];
     }
    elseif(isset($_GET['tableau']) && isset($_GET['index']))
     {
      $tableau = $_GET['tableau'];
      $index = $_GET['index'];
      $tab = unserialize($_SESSION[$tableau]);
      $obj = $tab[$index];
     }
     
    if(isset($_GET['listeDisplayBlock']))
     $_SESSION['listeDisplayBlock'] = substr($_GET['listeDisplayBlock'],0, -1);
     
     
    $_SESSION['objet'] = $obj;
     
    $interface = new CInterface($obj->getTitre(), $obj->getFichier(), 1, "");
    $interface->getHeader();
    $interface->getLogo();
    $interface->getTitre();
    $interface->getMenu();
    $interface->getContenu();
    $interface->getSignature();
     
    ?>
    -dans ma classe CInterface, le code correspondant au lien de retour vers le fichier "dossier.inc" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "\n    <tr id='trmenu'>
    	                  <td id='tdmenu'>
    	                   <A href='" . $_SERVER['HTTP_REFERER'] . "'>Retour</A>
    	                  </td>
    	                 </tr>";
    Encore un tout grand merci pour ton aide

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

Discussions similaires

  1. Url sous forme de variable dans window.location.replace
    Par sat99 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/07/2014, 14h43
  2. remplacer window.open par window.location.replace
    Par serna dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/12/2009, 17h06
  3. [Prototype] Ajax.Updater et window.onload
    Par fongus dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 22/08/2008, 21h28
  4. [AJAX] Compatibilite Ajax Internet explorer window.document.getElementById
    Par vinczente dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/06/2008, 09h49
  5. [Internet Explorer] window.location.replace ne fonctionne pas
    Par Gat- dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/02/2007, 13h15

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