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

jQuery Discussion :

rafraîchir une div (Objet XMLHttpRequest)


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut rafraîchir une div (Objet XMLHttpRequest)
    Bonsoir.
    Bon voilà je fais appel à vous, car là je vois pas mon problème ...
    En fait, j'ai un tchat, et je veux que les messages du tchat qui sont dans un div se rafraîchissent toutes les x secondes ...
    Etant en local, je test juste si les messages s'affichent au chargement de la page index.php.
    Donc je fais ça en AJAX ... le problème c'est que ça ne marche pas et que j'ai aucune erreur qui s'affiche

    Je vous met le code, en espérant que vous allez trouver mon problème, car ça fait 2h que je cherche, que j'essai de me renseigner, mais aucune réponse
    Dans le javascript, j'ai mis des alert() pour voir si je rentrais bien dedans, mais je rentre pas à partir de xhr.onreadystatechange = function()


    index.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <title>Tchat</title>
    <link rel="stylesheet" type="text/css" href="css/css.css" />

    <script type="text/javascript" src="js/fonctions.js"></script>

    </head>

    <body onLoad='apercu();'>

    <div id="tchat"></div>

    </body>
    </html>


    fonctions.js


    function getXhr()
    {
    var xhr; // création de l'instance de l'objet
    if (window.XMLHttpRequest) // Firefox et autres
    {
    xhr = new XMLHttpRequest();
    alert('ok1');
    }
    else if (window.ActiveXObject) //ie
    {
    xhr = new ActiveXObject('Microsoft.XMLHTTP');
    alert('ok2');
    }
    else
    {
    alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...');
    xhr = null;
    }
    return xhr;
    }

    function apercu()
    {
    var xhr = getXhr();

    xhr.open('POST','messagetchat.php',true);
    xhr.onreadystatechange = function()
    {
    alert('onrentre');
    if (xhr.readyState == 4 && xhr.status == 200)
    {
    alert('ok3');
    document.getElementById('tchat').innerHTML = xhr.responseText;
    }
    else
    {
    alert('erreur');
    }
    }
    xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    }


    messagetchat.php

    <?php
    include 'bdd/parametres.php';

    $requete = "SELECT * FROM msgtchat Order by idmsg Desc LIMIT 0,50";
    $resultat = mysql_query($requete)
    OR die ('Erreur sur la requête');

    while ($curseur = mysql_fetch_array($resultat))
    {
    $idmembre = $curseur['idmembre'];
    $msg = $curseur['msg'];
    $time = $curseur['time'];
    $date = $curseur['date'];
    $heure = $curseur['heure'];

    for ($i=1; $i<=$_SESSION['nbsmiley']; $i++)
    {
    $msg = ereg_replace(":$i:","<img src='smileys/$i.gif' alt='' />", $msg);
    }

    $requete2 = "SELECT login FROM membres WHERE idmembre ='$idmembre' ";
    $resultat2 = mysql_query($requete2)
    OR die('Erreur SQL');
    $lecture2 = mysql_fetch_array($resultat2);
    $login = $lecture2['login'];

    echo $login; ?> <b>:</b> <?php echo $msg; ?><br />

    <?php
    }
    ?>




    J'espère que vous pourrez m'aider.
    Cordialement

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    bonsoir,

    rien à voir avec un problème d'AJAX...on inclus pas un script javascript avec la fonction include de PHP !!! ça n'a rien à voir...
    enlève les balises scripts de ton fonctions.js et ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script type="text/javascript" src="js/fonctions.js"></script>
    dans le header de ton html

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Voilà je l'ai fais, mais ça ne change rien ... ça ne fonctionne toujours pas

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Par défaut
    Voici un début de réponse...

    Je dis début car le script ne fonctionne pas avec Firefox
    Quelqu'un a une petite idée d'où peux provenir le problème ?
    Merci d'avance.

    Voici le 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
    <script type='text/javascript' language='javascript'>
    function refresh_div() {
    var xhr_object = null;
    if(window.XMLHttpRequest){ // Firefox
    xhr_object = new XMLHttpRequest();
    }
    else if(window.ActiveXObject){ // Internet Explorer
    xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
    }
    var method = 'GET';
    var filename = 'votrescript.php';
    xhr_object.open(method, filename, true);
    xhr_object.onreadystatechange = function() {
    if(xhr_object.readyState == 4) {
    var tmp = xhr_object.responseText;
    document.getElementById('Iddeladiv').innerHTML = tmp;
    }
    }
    xhr_object.send();
    setTimeout('refresh_div()', 5000);
    }
    </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <body onload='refresh_div();'>
      <div id="Iddeladiv"></div> Div à placer à l'endroit où l'on veut afficher votrescript.php
    ...
    ...
    </body>
    Ce script fonctionne parfaitement avec ie7.


    A+...Seb.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Par défaut
    Voic le script que je propose corrigé :
    Fonctionne parfaitement avec Internet explorer et Firefox

    **************************************************************************
    FICHIER JS
    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
    function refresh_div()
    {
    	var xhr_object = null;
    	if(window.XMLHttpRequest)
    		{ // Firefox
    			xhr_object = new XMLHttpRequest();
    		}
    	else if(window.ActiveXObject)
    		{ // Internet Explorer
    			xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
    		}
    	var method = 'GET';
    	var filename = 'votrescript.php';
    	xhr_object.open(method, filename, true);
    	xhr_object.onreadystatechange = function()
    		{
    			if(xhr_object.readyState == 4)
    			{
    				var tmp = xhr_object.responseText;
    				document.getElementById('Iddeladiv').innerHTML = tmp;
    			}
    		}
    	xhr_object.send(null);
    	setTimeout('refresh_div()', 5000);
    }
    </script>
    BODY
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <body onload='refresh_div();'>
      <div id"Iddeladiv'"></div> Div à placer à l'endroit où l'on veut afficher votrescript.php
    ...
    ...
    </body>
    Merci à Sékiltoyai...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Bonsoir.
    Bon me revoilà, après en avoir appris beaucoup plus sur l'ajax et en recherchant un truc je suis retombé sur mon problème lol

    Merci sebbl pour ton script, mais là j'ai une question que je comprend pas ..
    Pourquoi avoir passer un nombre entre 0 et 1 transcris en hexa dans l'url ? car j'en vois pas l'utilité dans monscript.php

    Cordialement

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Par défaut
    Oups... 3 mois plus tard...
    J'ai retiré le nombre aléatoire qui n'a aucune utilité(pour vous) dans ce script.
    26/09/07 Edit du code : ligne 12 : var method = 'GET'; --> var method = 'POST';
    Merci à uado pour cette information.
    05/10/07 Edit : Ne pas mettre le code php entre les balises <div>
    05/10/07 Edit : [javascript]Ajout d'une alerte dans le cas où l'objet XMLHttpRequest n'est pas supporté.

    **************************************************************************
    1. FICHIER JS
    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
    function refresh_div()
    {
    	var xhr_object = null;
    	if(window.XMLHttpRequest)
    		{ // Firefox
    			xhr_object = new XMLHttpRequest();
    		}
    	else if(window.ActiveXObject)
    		{ // Internet Explorer
    			xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
    		}
    	else { // XMLHttpRequest non supporté par le navigateur 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   xhr_object = false; 
    		}
    	var method = 'POST';
    	var filename = 'votrescript.php';
    	xhr_object.open(method, filename, true);
    	xhr_object.onreadystatechange = function()
    		{
    			if(xhr_object.readyState == 4)
    			{
    				var tmp = xhr_object.responseText;
    				document.getElementById('ID MON DIV').innerHTML = tmp;
    			}
    		}
    	xhr_object.send(null);
    	setTimeout('refresh_div()', 5000);
    }
    </script>
    2. HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <body onload='refresh_div();'>
      <div id='ID MON DIV'>chargement en cours... ou tout autre texte, code, etc..</div> div à placer à l'endroit où vous désirez afficher votrescript.php
    Attention : ne pas insérer directement votre code php dans le div !
    ...
    ...
    </body>
    PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php Votre code php ;?>

Discussions similaires

  1. [AJAX] Rafraîchir une DIV après requête AJAX
    Par TheBleedz dans le forum jQuery
    Réponses: 6
    Dernier message: 05/12/2013, 19h10
  2. Réponses: 3
    Dernier message: 31/05/2013, 11h07
  3. Rafraîchir une div à la fermeture d'une thickbox
    Par Hugo_O dans le forum jQuery
    Réponses: 0
    Dernier message: 21/05/2012, 15h45
  4. [Débutant] "Rafraîchir" une <div> ?
    Par the_pit dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/07/2006, 16h56

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