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 :

[AJAX] echo dans une httprequest


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Par défaut [AJAX] echo dans une httprequest
    Bonjour à tous,
    un curieux pb d'erreur de syntaxe avec un 'echo' tout bête :
    j'affiche la date d'un fichier avec ce bête script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php 
    setlocale(LC_ALL, 'french');
    clearstatcache();
    if (file_exists('cam.jpg')) {
    echo strftime('le %A%e %B %G / %H:%M:%S', filemtime('cam.jpg'));
    }
    ?>
    ce script fonctionne très bien lors de l'appel au chargement initial de ma page.
    Mais je veux actualiser régulièrement (toutes les 10s) car cam.jpg est l'image d'une webcam :
    j'utilise donc un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout('reload()',10000);
    et dans le reload j'utilise une requête http ( ajax ), ... je résume :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    requeteHttp=new XMLHttpRequest(); 
    requeteHttp.open('GET',url,true);
    // dans url mon script php ci dessus ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function traiterReponse(reponse) 
    { 
      document.getElementById("date2").innerHTML=reponse;
    // donc dans reponse la chaine renvoyée par echo ... 
    }
    et là, avec donc le même script php, dés le premier rafraichissement, ça foire :
    dans Firefox, j'ai une erreur de syntaxe : curieusement toujours sur le troisième caractère de la chaine renvoyée par echo et ce quelque soit ce que j'essaye de renvoyer...
    la date ne se réactualise pas toujours : on dirait qu'elle veut bien se réactualiser lorsque les minutes changent !....
    Si quelqu'un a une idée ?
    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    en complément, peux-tu faire ici un copié/collé d'un exemple de résultat renvoyé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo strftime('le %A%e %B %G / %H:%M:%S', filemtime('cam.jpg'));
    Je parle du code HTML généré (celui que tu récupéreras dans le code source de la page du nav si tu tapes l'"url" appelée par Ajax directement dans la barre d'adresse).

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Par défaut
    Bonjour E.Bzz, et merci pour ton intérêt à mon pb
    j'ai d'ailleurs mis en évidence un autre pb sur les caractères diacritiques,
    mon nouveau script 'date.php':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    setlocale(LC_ALL, 'french');
    clearstatcache();
    if (file_exists('cam.jpg')) {
    echo strftime('le %A%e %B %G à %H:%M:%S', filemtime('cam.jpg'));
    }
    ?>
    j'ai juste remplacé le / par à
    ce script lorqu'il est appelé "directement" au chargement de la page principale me donne une chaine correcte :
    le mardi 7 avril 2009 à 22:11:07
    puis lorsque j'appelle ce même script par une requête http, j'ai
    le mardi 7 avril 2009 � 22:11:07
    avec dans la console d'erreur de FireFox :

    curieusement l'erreur de syntaxe porte non pas sur une ligne de code du script mais sur la chaine renvoyée par l'echo et toujours sur le 3ème caractère, même si mon echo renvoi "coucou" ...??
    as tu une idée ?
    Merci.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    As-tu vérifier le charset du retour d'Ajax ?
    Très possible que ça vienne de là. En fait il n'arrive pas à "lire" la chaîne qu'il reçoit (je pense que la "position 3" est bidon).

    A+

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Par défaut
    Merci,
    le problème du caractère diacritique est réglé par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    overrideMimeType('text/html; charset=ISO-8859-15');
    le pb de la pseudo erreur de syntaxe est réglé (mais je n'ai pas encore analysé pourquoi) en réecrivant une fonction d'appel ajax plus "compacte" :
    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
    function refresh()
    {
       // reload image; ajouter un nb aléatoire pour ne pas recharger l'image en cache
       document.images["cam1"].src="cam.jpg"+"?a="+Math.random(1);
       // rafraichir le div date par une requête http
       var xhr = null;
       if(window.XMLHttpRequest)    // Firefox
          { xhr = new XMLHttpRequest();}
       else if(window.ActiveXObject)       // Internet Explorer
          { xhr = new ActiveXObject('Microsoft.XMLHTTP');}
       else { // XMLHttpRequest non supporté par le navigateur
          alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
          xhr = false;
          }
       xhr.open('GET', 'date.php', true);
       xhr.onreadystatechange = function()
          {
             if(xhr.readyState == 4)
               {document.getElementById("date2").innerHTML = xhr.responseText;}
          } 
       xhr.overrideMimeType('text/html; charset=ISO-8859-15');
       xhr.send(null);
       // relancer le timer
       setTimeout('refresh()', 10000);
    }
    Il reste que l'heure n'est pas actualisée de manière convenable : elle ne change que lorsque les minutes changent,
    c'est peut être un pb côté serveur, je vais fouiller.
    merci de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. rediriger le contenu de echo dans une variable
    Par mitou dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2008, 09h19
  2. [AJAX] Evenement dans une liste
    Par dieudo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/01/2008, 09h26
  3. Réponses: 6
    Dernier message: 18/01/2008, 17h12
  4. [AJAX] Positionnement dans une liste déroulante
    Par Paul75 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/04/2007, 11h25
  5. [PHP-JS] faire un echo dans une action
    Par killer_instinct dans le forum Langage
    Réponses: 7
    Dernier message: 31/03/2007, 14h47

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