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 :

chat php/javascript


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut chat php/javascript
    bonjour a tous, j'ai un probleme

    voila, je veut faire une sorte de chat tres simple.

    En fait, ca consiste a afficher les 20 dernier messages entrés dans un formulaire

    chacun doit pouvoir voir quasiment en direct que quelqu'un a entré un message

    ducoup, j'ai une page php qui gere le formulaire, et l'enregistrement du message
    et une autre qui affiche dans la <div id="b_a_f_affichage"></div>

    Cette seconde affichage.php doit se mettre ajourtoutes les 2 sec

    ducoup j'ai ecrit ca en tete de affichage.php, mais ca ne marche pas.
    est-ceque quelqu'un voit l'erreur surement enorme?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<script language="javascript" type="text/javascript">
    setTimeout("urlInDiv(\'affichage.php\',\'b_a_f_affichage\')",2000);
    </script>';
    le principe est que ma fonction urlInDiv qui marche nickel doit etre réévalué toutes les 2 secondes
    elle fait alors une requete simple qui recharge affichage.php dans b_a_f_affichage

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Par défaut
    slt,

    urlindiv = ajax ??

    envoie le code de cette fonction stp

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    deja merci pour ta reponse.

    le code de urlin div, et d'une sous fonction:

    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
    function newXHRObject () //xhr estnotre variable objet XmlHttpRequest
    {
    var xhr=null;
    if (window.XMLHttpRequest)                 //  Objet de la fenêtre courant
    { 
        xhr = new XMLHttpRequest();     //  Firefox, Safari, ...
    } 
    else 
    {	 if (window.ActiveXObject)                    //  Version Active
       	{
          	xhr = new ActiveXObject("Microsoft.XMLHTTP");   // Internet Explorer 
       	}
    	else xhr=null;
    }
     
    return xhr;
    }
     
    function urlInDiv(url,id)
     {
     var xhr = newXHRObject();
     var position=id;
     if(xhr)
    	{
    	 // On ouvre la requete vers la page désirée
    	 xhr.open("GET", url, true);
    	 xhr.onreadystatechange = function()
    		{
    		 if ( xhr.readyState == 4 )
    			 {
    			 // j'affiche dans la DIV spécifiées le contenu retourné par le fichier
    			 document.getElementById(position).innerHTML = xhr.responseText;
    			 }
    		 }
     // dans le cas du get
     xhr.send(null);
    	}
     }
    oui, c'est de l'ajax, mais le setTimeout etant purement du js, j'ai préféré le placer dans le forum js

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Par défaut
    slt,

    en fait, soit tu remplaces settimeout par setinterval, soit tu places le settimeout juste après le xhr.send (et dans ce cas tu appelles urlindiv dans le onload de body)...

    autre chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function newXHRObject(){ //définition de la classe
    	try{ return new ActiveXObject("Microsoft.XMLHTTP");}
    	catch(e){
    		try{ return new ActiveXObject("Msxml2.XMLHTTP");}
    		catch(e){
    			try{ return new XMLHttpRequest();}
    			catch(e){ return false;}
    			}
    		}
    	}
    c'est plus complet

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    Merci beaucoup

    bon, j'ai modifié, en mettant settimeout apres le urlindiv.
    Ca rafraichit bien, mais j'ai cette réponse

    Bad Request
    Your browser sent a request that this server could not understand.


    C'est assez bizarre, car enfait, la âge php s'affiche bien, et au premier rafraichissement, j'ai ca.
    Le probleme ne vient pas de urlindiv qui marche tres bien en non rafraichit
    et la page affichage.php comprend un unique echo 'affichage';

    or le js est executé coté client si je ne me trompe pas, donc je ne comprend pas bien.

    Au départ, j'ai un include ('affichage.php'); dans la div que je veut, je pourrait l'enlever a priori, le chargement ce fera avec onload,

    je me demande si le problemevient de la, ou d'une mise en cache des fichiers, et surtout je ne comprend pas ce que le serveur peut ne pas comprendrer puisqu'il n'est censé évalué que le php qui est tres sim
    Aide?

    note d'apres ce que j'ai pu glanner sur le web, ca vient du fait que j'envoie 2 requetes en meme temps
    en supposant que ca vient du fait que je fait onload="Rafraichissement()" comment faire?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<script language="javascript" type="text/javascript">
    setTimeout(function(){urlInDiv(\'affichage.php\',\'b_a_f_affichage\')},2000);
    </script>';
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    Hello et merci pour avoir répondu et si vite

    J'ai un progrés, il respecte le temps en miliseconde maintenant, mais dès que la requete est envoyée, j'ai la même erreur

    badrequest your browser....

    est-ce qu'un reload() appliqué a un document.getelementbyid("id") marcherait?

    et comment on fait ca?

Discussions similaires

  1. détection JVM installé avec script php/javascript
    Par <DYDY> dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/06/2006, 14h42
  2. [PHP-JS] Problème php-javascript (suite)
    Par nicoaix dans le forum Langage
    Réponses: 4
    Dernier message: 21/12/2005, 10h47
  3. Réponses: 8
    Dernier message: 10/11/2005, 15h58
  4. Réponses: 7
    Dernier message: 08/10/2005, 08h59
  5. [PHP-JS] php & javascript
    Par MANU_2 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/08/2005, 11h18

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