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 :

Rafraîchir une page si la page est différente


Sujet :

AJAX

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 53
    Points : 46
    Points
    46
    Par défaut Rafraîchir une page si la page est différente
    Bonjour, j'ai un mini-chat pour une plateforme. Les languages que j'utilise sont le PHP, l'Ajax, le jQuery et le Javascript.

    J'utilise ces deux fonctions pour recharger automatiquement les pages apres 1 seconde:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    setInterval(function()
            {
    			$("#content").load("discussionShow.php");
    	},1000);
    ça marche à merveille mais maintenant je voudrais raffraichir la page si et seulement si le contenu de la page "discussionShow.php" a changé, c'est a dire seulement lorsqu'il y'a de nouveaux message!

    Merci d'avance!

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    vu que tu utilise jQuery il te faudra lire la doc jQuery car je ne sais pas quand est appelé, avec cette sur-couche, la callback de traitement de la réponse.

    avec AJAX c'est XMLHttpRequest lorsque la requête est envoyé la méthode onReadyStateChange est appelé régulièrement (à chaque fois que l'état change)
    dans cette méthode on a accès au statut de la réponse.

    si rien n'a changé le serveur DOIT (c'est le protocole) réponde 302 found (ce qui signifie qu'il a trouvé la ressource mais ne la retourne pas)

    dans la méthode onReadyStateChange on teste le status de la réponse si c'est 200 alors on appelle la calback success si c'est 4xx 5xx alors on appel la calback failed
    et on peut choisir quoi faire sur un 302.

    dans JQuery je ne sais pas ce qui à été choisi la méthode load crée un $.ajax avec des méthodes de calback le $.ajax lui même crée un XMLHttpRequest et implémente la méthode onReadyStateChange.

    ça fait beaucoup de chose faite dans le dos du développeur.

    le principe est le suivant
    le client fait un XMLHttpRequest vers discussionShow.php
    le serveur php recherche le contenu de la discussion
    si elle n'a pas changé depuis le dernier appel il retourne le header 301
    si il a change il retourne le header 200 et contenu

    la méthode onReadyStateChange vérifie le status
    si c'est 200 elle change le contenu de l'affichage (appel de la calback avec les paramètres nécessaire)
    si c'est 301 elle ne fait rien.

    A+JYT

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    petite precision : l'ajax permet justement de faire des traitements sans raffraichir une page....
    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 getLastMessages() {
      $.ajax({
        dataType: 'json',//serait ideal ;)
        timeout:5000,//si tu veux
        url:'ta/page/qui/verifie/les/nouveaux/messages.php',
        success:function(data){
          //theoriquement, retournerai tous les nouveaux messages
          //boucler pour tous les ajouter a la suite de la discussion
          une_fonction_qui_ajoute_un_message(data.message);
        },
        error:function(data) {
          //afficher un message en fonction de l'erreur
        }
      });
      setTimeout(getLastMessages, 1000);
    }
    getLastMessages();
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    @Doksuri c'est ce qu'il fait
    il change que le contenu de #content
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#content").load("discussionShow.php");
    la question est load change-t-il le contenu de content à chaque fois ou seulement si les données chargées on changées ?

    A+JYT

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2015, 13h40
  2. Réponses: 1
    Dernier message: 23/05/2010, 09h08
  3. Réponses: 27
    Dernier message: 09/09/2009, 12h17
  4. rafraîchir une parti de la page
    Par schats dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/06/2007, 11h25
  5. Rafraîchir une page php
    Par WiLL_59 dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 18h16

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