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

Bibliothèques & Frameworks Discussion :

AJAX / Mise à jour de div


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre actif
    Inscrit en
    Août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 96
    Points : 205
    Points
    205
    Par défaut AJAX / Mise à jour de div
    Bonjour, j'ai un code pourtant pas si compliqué mais qui semble ne pas fonctionner : il s'agit d'un tableau HTML dont les lignes sont filtrées et réaffichées avec Ajax lorsque l'on saisit des caractères dans un input correspondant à la colonne à filtrer (Equivalent du WHERE champ like 'abc%' SQL).

    Voici le contenu du fichier XML de réponse (fo_filtrer.php), qui me renvoie les résultats attendus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Header("content-type: text/xml");
    $newContent .= '<?xml version="1.0" encoding="UTF-8"?>';
    $newContent .= '<ajax-response>';
    $newContent .= '<response type="element" id="d2">';
    $newContent .= utf8_encode(fo_creer_corps($sql)); 
    $newContent .= '</response>';
    $newContent .= '</ajax-response>';
    Je vous passe les détails de la fonction fo_creer_corps() qui me sert à sortir le fichier final (fo_filtrer.php) suivant :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
        <ajax-response>
          <response type="element" id="d2">
            <tr id="tr_1" class="tr_paire">
              <td id="td_1_0">
                2185
              </td>
              <td id="td_1_1">
                test
              </td>
              <td id="td_1_2">
                2007-01-23
              </td>
              <td id="td_1_3">
                2007-01-25
              </td>
            </tr>
            <tr id="tr_2" class="tr_impaire">
              <td id="td_2_0">
                2186
              </td>
              <td id="td_2_1">
                test2
              </td>
              <td id="td_2_2">
                2002-01-16
              </td>
              <td id="td_2_3">
                2002-01-18
              </td>
            </tr>
          </response>
        </ajax-response>
    Et voici le fichier index.php qui ne fonctionne pas :
    (je précise que les alert(); placés dans le code pour vérification s'exécutent bien, la fonction javascript fo_filtrer est donc bien appelée)
    Je place aussi la réponse dans le div d2 au lieu du div d1 pour mieux débugger et les détails de l'implémentation sont omis pour une meilleure visibilité.

    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Tableau AJAX</title>
    <script src="rico2rc2/src/prototype.js" type="text/javascript"></script>
    <script src="rico2rc2/src/rico.js" type="text/javascript"></script>
    <script type="text/javascript">
    function registerStuff()
    {
        alert('ok1');
        ajaxEngine.registerRequest('fo_filtrer','http://localhost/AJAXX/fo_filtrer.php');
        ajaxEngine.registerAjaxElement('d2');
    }
    function fo_filtrer()
    {
        alert('ok2');
        //Envoyer le formulaire form_filtre
        //document.form_filtre.action='fo_filtrer.php';
        //document.form_filtre.submit();
        ajaxEngine.sendRequest('fo_filtrer');
    }
     
    </script>
    </head>
    <body onLoad="registerStuff()">
    <div id="d1">
      <table id="table1" cellspacing="0" border="1" width="800px">
        <thead>
          <tr id="tr_0">
            <th id="th_0" width="80px">ID</th>
            <th id="th_1" width="80px">TITRE</th>
            <th id="th_2" width="80px">DATE_DEBUT</th>
            <th id="th_3" width="80px">DATE_FIN</th>
          <tr id="tr_filtre">
            <form id="form_filtre" name="form_filtre">
              <td id="td_filtre0" name="td_filtre"><input id="input_filtre_value0" name="input_filtre_value0" type="text" onKeyUp="fo_filtrer()" />
                <input id="input_filtre_name0" name="input_filtre_name0" type="hidden" value="IDFI_MANIF" /></td>
              <td id="td_filtre1" name="td_filtre"><input id="input_filtre_value1" name="input_filtre_value1" type="text" onKeyUp="fo_filtrer()" />
                <input id="input_filtre_name1" name="input_filtre_name1" type="hidden" value="TITRE" /></td>
              <td id="td_filtre2" name="td_filtre"><input id="input_filtre_value2" name="input_filtre_value2" type="text" onKeyUp="fo_filtrer()" />
                <input id="input_filtre_name2" name="input_filtre_name2" type="hidden" value="DATE_DEBUT" /></td>
              <td id="td_filtre3" name="td_filtre"><input id="input_filtre_value3" name="input_filtre_value3" type="text" onKeyUp="fo_filtrer()" />
                <input id="input_filtre_name3" name="input_filtre_name3" type="hidden" value="DATE_FIN" /></td>
            </form>
          <tr>
        <thead>
        <tbody id="table_body">
        <span id="span_body">
        <tr id="tr_1" class="tr_paire">
          <td id="td_1_0">2185</td>
          <td id="td_1_1">test</td>
          <td id="td_1_2">2007-01-23</td>
          <td id="td_1_3">2007-01-25</td>
        </tr>
        <tr id="tr_2" class="tr_impaire">
          <td id="td_2_0">2150</td>
          <td id="td_2_1">test3</td>
          <td id="td_2_2">2002-01-16</td>
          <td id="td_2_3">2002-01-18</td>
        </tr>
        </span>
        </tbody>
        <div id="res"></div>
      </table>
    </div>
    <div id="d2"></div>
    </body>
    </html>
    J'espère que quelqu'un saura m'aider.
    Merci d'avançe.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    il s'agit vraisemblablement du récurent problème de cache (sous IE).

    Ajoute un timestamp (paramètre variable, ex : date en ms) à l'url appelée par Ajax, pour forcer la rafraîchissement du cache ...
    Sinon, voir les entête PHP "no-cache".

    Pour plus de précisions, une petite recherche s'impose

    A+

Discussions similaires

  1. [ZF 1.10] Ajax : Mettre à jour une div de index.phtml
    Par arsene555 dans le forum Zend Framework
    Réponses: 5
    Dernier message: 26/11/2010, 11h53
  2. [MooTools] Mise à jour de div et formulaires
    Par masseur dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 05/10/2008, 18h56
  3. [AJAX] mise à jour d'un UpdatePanel
    Par zooffy dans le forum ASP.NET
    Réponses: 21
    Dernier message: 21/07/2008, 11h22
  4. [AJAX] Mise à jour selon le temps d'un UpdatePanel
    Par zooffy dans le forum ASP.NET
    Réponses: 22
    Dernier message: 29/05/2008, 11h46
  5. [AJAX] Mise a jour de deux div
    Par Phenomenium dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2006, 18h38

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