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] Affichage dynamique en AJAX


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [AJAX] Affichage dynamique en AJAX
    Bonjour,
    Je suis un nouvel inscrit sur ce forum et je souhaiterais avoir vos lumières concernant un petit problème que je n'ai pas réussi à résoudre.

    Je souhaite utilisé l'AJAX pour afficher dynamiquement l'heure serveur qui se trouve dans un fichier php.

    Voici le code du fichier php (somme toute très classique !!! ):

    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
     
     
    $serveur_jour = date("d");
    $serveur_mois = date("n");
    $serveur_year = date("Y");
     
    // Affichage du nom du jour
    if (date("D") == "Mon") $nom_jour = "lundi";
    if (date("D") == "Tue") $nom_jour = "mardi";
    if (date("D") == "Wed") $nom_jour = "mercredi";
    if (date("D") == "Thu") $nom_jour = "jeudi";
    if (date("D") == "Fri") $nom_jour = "vendredi";
    if (date("D") == "Sat") $nom_jour = "samedi";
    if (date("D") == "Sun") $nom_jour = "dimanche";
     
    // Affichage du nom des mois
    if ($serveur_mois == 1 ) 
    	$serveur_mois ="janvier";
    if ($serveur_mois == 2 ) 
    	$serveur_mois ="février";
    if ($serveur_mois == 3 ) 
    	$serveur_mois ="mars";
    if ($serveur_mois == 4 ) 
    	$serveur_mois ="avril";
    if ($serveur_mois == 5 ) 
    	$serveur_mois ="mai";
    if ($serveur_mois == 6 ) 
    	$serveur_mois ="juin";
    if ($serveur_mois == 7 ) 
    	$serveur_mois ="juillet";
    if ($serveur_mois == 8 ) 
    	$serveur_mois ="aout";
    if ($serveur_mois == 9 ) 
    	$serveur_mois ="septembre";
    if ($serveur_mois == 10 ) 
    	$serveur_mois ="octobre";
    if ($serveur_mois == 11 ) 
    	$serveur_mois ="novembre";
    if ($serveur_mois == 12 ) 
    	$serveur_mois ="décembre";
     
    echo $nom_jour." ".$serveur_jour." ".$serveur_mois." | ".date("H:i:s");
    Voici maintenant le code de la page qui doit afficher cette heure :

    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
     
    <script language="javascript">
     
    	function AjaxHeure(){
                                    var xhr_heure = null; 
    				if(window.XMLHttpRequest) 				       xhr_heure = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ 				   try {
    			                xhr_heure = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr_heure = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { 				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr_heure = false; 
    				} 
                                    return xhr_heure
    			}
     
    			function DateHeureServeur(){
    			var xhr_heure = AjaxHeure()
    								xhr_heure.onreadystatechange = function(){
    										if(xhr_heure.readyState == 4 && xhr_heure.status == 200){
     
    					document.getElementById('date_heure_serveur').innerHTML = xhr_heure.responseText;
     
    					}
    				}
    					fichier = "date_heure_serveur.php";
    					xhr_heure.open("GET",fichier,true);
    					xhr_heure.send(null);
     
    			}
     
    			setInterval(DateHeureServeur,1000);
     
     
    </script>
     
    <div id="date_heure_serveur">Chargement en cours ...</div>
    Mon problème est le suivant :

    - sur IE, ce script a marché environ 30 minutes puis l'affichage se bloque sur l'heure (sans pour autant bloquer l'activité du site). Aucun moyen de refaire afficher la bonne heure !!! même pas un redémarrage du PC !

    Par contre, sur Netscape aucun souci ce script marche à la perfection ;

    Pouvez vous m'aider ?
    Damdam

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bon c'est un problème de cacha sous IE mais je ne sais pas comment obliger le script coté client à recharger systématiquement la page !

    @+

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    tu remplaces simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier = "date_heure_serveur.php";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier = "date_heure_serveur.php?" + Math.random();
    Ainsi la requête est toujours différente, mais pointe toujours vers le même fichier.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,
    Merci pour le truc, mais n'y a t-il pas une éciture PHP plus propre ?
    Merci

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Pour contourner un cache, non, y'a pas plus propre.

    Par contre, si tu parles du code PHP à proprement parler, il y a plus propre, effectivement, car autant d'appels à date() bouffent du processeur comme rien :
    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
    <?php
     
    // Comput francophone
    $mois=array('','janvier','f&eacute;vrier','mars','avril','mai','juin','juillet','ao&ucirc;t','septembre','octobre','novembre','d&eacute;cembre');
    $jours=array('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');
     
    // Préférable si PHP5.
    $date = explode('*',date('w*Y*n*d*H*i*s', $_SERVER['REQUEST_TIME']));
     
    // Sinon, se rabattre sur le standard
    // $date = explode('*',date('w*Y*n*d*H*i*s'));
     
    /*
     * $date[0] : jour sem  0 ->  6
     * $date[1] : année  1970 -> 2038
     * $date[2] : mois      1 -> 12
     * $date[3] : jour     01 -> 31
     * $date[4] : heures   00 -> 23
     * $date[5] : minutes  00 -> 59
     * $date[6] : secondes 00 -> 59
     */
     
    printf('%s %s %s | %s:%s:%s', $jours[$date[0]], $date[3], $mois[$date[2]], $date[4], $date[5], $date[6]);
     
    ?>

  6. #6
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Citation Envoyé par dingoth
    Pour contourner un cache, non, y'a pas plus propre
    Est-ce que des directives comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header( "Cache-Control: no-cache, must-revalidate" ); // HTTP/1.1
    header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); // Date du passé
    header( "Pragma: no-cache" );
    ne remplissent pas ce rôle ?

  7. #7
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par Herode
    Est-ce que des directives comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header( "Cache-Control: no-cache, must-revalidate" ); // HTTP/1.1
    header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); // Date du passé
    header( "Pragma: no-cache" );
    ne remplissent pas ce rôle ?
    Si, mais il est toujours préférable de passer la date en argument...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("POST", url+"&date="+escape(new Date()), true)

Discussions similaires

  1. menu dynamique Ajax, affichage et répétition de pages
    Par chichou007 dans le forum jQuery
    Réponses: 2
    Dernier message: 12/07/2011, 19h57
  2. canvas et affichage dynamique en AJAX
    Par hortensebass dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 31/03/2011, 01h08
  3. [AJAX] affichage dynamique avec php/ajax
    Par cyrilherve dans le forum AJAX
    Réponses: 1
    Dernier message: 15/09/2010, 19h44
  4. [AJAX] AJAX affichage DIV avec nom dynamique
    Par Orelz dans le forum AJAX
    Réponses: 2
    Dernier message: 30/07/2009, 10h02

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