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] Raffraichissement sous firefox


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 42
    Points
    42
    Par défaut [AJAX] Raffraichissement sous firefox
    Salut à toute la troupe,

    J'ai un petit soucis avec un raffraichisement de tableau, le but est que quand je clique sur une checkbox appartenant au tableau, la ligne s'archive et le tableau se raffraichit en enlevant la ligne.

    J'avais donc cherché à mettre des headers pour le cache, el tout marche impeccablement sous Ie mais sous firefox, l'action sur le tableau est faite mais le tableau ne se raffrachit pas toujours.

    Voici une partie du code :

    Cellule du tableau avec la checkbox ou se déroule l'action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input type="checkbox" onclick="go_fournisseur('<?php echo $donnees['id_fournisseur']; ?>');reload_fournisseur('0')"/></td>
    Partie archivage :
    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
    <?php
       header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
       header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
       header("Cache-Control: no-cache, must-revalidate");
       header("Pragma: no-cache"); 
       header('Content-type: text/html; charset=ISO-8859-1');
            
       include("../fonctions_communes/php/fonctions.php");
       //On se connecte à la base de données
       connection();
            
       $id_fournisseur = $_GET['id_fournisseur'];
                            
       //Sélection des données dans la table article ou l'id_article est pour l'article en question (Sert notamment à récupérer la valeur de "archive_article" pour la condition)
       $slct_fournisseur = mysql_query("SELECT archives_fournisseur FROM fournisseurs WHERE id_fournisseur='".$id_fournisseur."'");
       $donnees = mysql_fetch_array($slct_fournisseur);
       $archive = $donnees['archives_fournisseur'];
     
       if($archive == 0)
       {
          mysql_query("UPDATE fournisseurs SET archives_fournisseur='1' WHERE id_fournisseur='".$id_fournisseur."'") or die ("La requête de modification de la base de données <b>(mettre 0)</b> n'a pas été prise en compte");
       }
       else if($archive == 1)
       {
          mysql_query("UPDATE fournisseurs SET archives_fournisseur='0' WHERE id_fournisseur='".$id_fournisseur."'") or die ("La requête de modification de la base de données <b>(mettre 1)</b> n'a pas été prise en compte");
       }            
    ?>
    Pour le tableau qui est raffraichit, c'est le même que celui ou j'ai les checkbox (logique ).

    Pour ce qui est de l'Ajax :
    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
    function getXhr()
    {
       var xhr = null; 
       if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest(); 
       else if(window.ActiveXObject)
       { // Internet Explorer 
          try 
          {
             xhr = new ActiveXObject("Msxml2.XMLHTTP");
          } 
          catch (e) 
          {
             xhr = new ActiveXObject("Microsoft.XMLHTTP");
          }
       }
       else 
       { // XMLHttpRequest non supporté par le navigateur 
          alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
          xhr = false; 
       } 
       return xhr
    }
     
    /**
    * PERMET DE FAIRE UN UPDATE SUR LA TABLE FOURNISSEUR AFIN DE POURVOIR LES ARCHIVER
    */
    function go_fournisseur(id)
    {
       var xhr = getXhr()
       // On défini ce qu'on va faire quand on aura la réponse
       xhr.onreadystatechange = function()
       {
          // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
          if(xhr.readyState == 4 && xhr.status == 200)
          {
             xhr.responseText;
          }
       }
       xhr.open("GET","archivage_fournisseur.php?id_fournisseur="+id,true);
       xhr.send(null);
    }
     
    /**
    * PERMET DE RECHARGER LE TABLEAU DES FOURNISSEURS
    */
    function reload_fournisseur(type)
    {
       var xhr = getXhr()
       // On défini ce qu'on va faire quand on aura la réponse
       xhr.onreadystatechange = function()
       {
          // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
          if(xhr.readyState == 4 && xhr.status == 200)
          {
             document.getElementById("mondiv").innerHTML = xhr.responseText;
          }
       }
       xhr.open("GET","tableau_fournisseur.php?type="+type,true);
       xhr.send(null);
    }
    Si quelqu'un peut m'aider, j'ai déjà parcouru le forum en long et en large, et je pense que ca vient du cache de firefox, Ie nickel et Firefox pas nikel, en principe c'est le contraire lol

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Voici ma solution pour de la proplème de cache des navigateurs : créer une "random string" (pardon, je ne sais pas exprimer ce groupe de mots en francais ) puis l'apposer à "query string". Par example :

    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 createId(len){
       var theId=""; 
        var rd="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            rd+=rd.toLowerCase ()+"0123456789";
               for(var i= 0;i<len;i++){
                   var $n=Math.round(Math. random()*rd.length);
                   theId+=rd.charAt($n); 
               }
         return theId;
    }
     
    ............
     
     var url="archivage_fournisseur.php?id_fournisseur="+id;
     url+="&randomId="+createId(25);
    ...
     
       xhr.open("GET",url,true);
       xhr.send(null);

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Merci Sacroyant pour ta réponse, mais quel est le but véritable pour ce "random string"

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par furth
    Merci Sacroyant pour ta réponse, mais quel est le but véritable pour ce "random string"

    Quand "the URL String" ( ) d'une page changée, le navigateur le rechargera. Avec cette particularité, on peut résoudre la problème de l'histoire des navigateurs dans les Web - AJAX applications.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Re,

    J'ai utilisé ce que tu m'as donné comme ceci :

    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 createId(len){
       var theId=""; 
        var rd="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            rd+=rd.toLowerCase ()+"0123456789";
               for(var i= 0;i<len;i++){
                   var $n=Math.round(Math. random()*rd.length);
                   theId+=rd.charAt($n); 
               }
         return theId;
    }
     
    /**
    * Permet de recharger le tableau des ARTICLES
    */
    function reload_article(id,type)
    {
       var xhr = getXhr()
       // On défini ce qu'on va faire quand on aura la réponse
       xhr.onreadystatechange = function()
       {
          // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
          if(xhr.readyState == 4 && xhr.status == 200)
          {
             document.getElementById("mondiv").innerHTML = xhr.responseText;
          }
       }
       xhr.open("GET","tableau_articles.php?produit="+id+"&type="+type+"&randomId="+createId(25),true);
    	xhr.send(null);	
    }
    Mais gj'ai l'impression que le "randomId=" ne passe pas !!

    Y'aurait pas une erreur dans ma mise en place

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    J'ai résolu le problème, par contre, toujours le soucis du raffraichissement qui est présent.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par furth

    Mais gj'ai l'impression que le "randomId=" ne passe pas !!

    Y'aurait pas une erreur dans ma mise en place
    Tu es un web programmer, pourquoi tu parles de juger sur l'impression

    (Je te remercie, grace à cet topic, j'ai su le mot "problème" qui est masculin )

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Petit Up

    Toujours problème de raffraichissement, si quelqu'un a déjà rencontré ce problème !!

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Personne n'a de solution ou ça n'arrive qu'à moi ???

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Petit Up !!

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Essaie de rajouter le "no-store" dans ton header "Cache-Control", cela devrait résoudre ton problème : header("Cache-Control: no-store, no-cache, must-revalidate");

Discussions similaires

  1. Formulaire Ajax - bug de raffraichissement de résultats sous Firefox 10
    Par Kalram dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/02/2012, 16h58
  2. [AJAX] Ajax "undefined" sous Firefox
    Par mess is lore dans le forum AJAX
    Réponses: 5
    Dernier message: 04/08/2010, 18h52
  3. [AJAX] Affichage sous Firefox
    Par Istrella dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/05/2007, 17h54
  4. [AJAX] : pb en communication Synchrone sous Firefox !
    Par Foub dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/08/2006, 17h32
  5. Réponses: 2
    Dernier message: 23/04/2006, 21h02

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