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 :

[DOM] JavaScript et DOM pour modifier du texte


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut [DOM] JavaScript et DOM pour modifier du texte
    Bonjour à tous,

    Mon problème est assez simple. Je récupère la réponse d'une requète XmlHttpRequest (code html généré par un script php) que j'aimerai afficher dans une balize DIV de ma page HTML.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    xhr_object.onreadystatechange = function(){
    	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    	if(xhr_object.readyState == 4 && xhr_object.status == 200){
    		document.getElementById("info").innerHTML=xhr_object.responseText;
    	}
    }
    Tout marche très bien lors du premier appel à la fonction (clic sur un bouton par exemple). Le problème survient lors des appels suivant. Au lieux de remplacer simplement mon texte par la réponse de la nouvelle requète, il les "colle" ensemble et afficher l'ancier et le nouveau (et ainsi de suite). J'aimerai donc savoir comment faire pour "vider" le contenu de la balize "info" avant une nouvelle requète, ou tout autre moyen pour gérer ce genre de situation.

    Merci pour votre aide,

    Kev.

  2. #2
    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 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 638
    Points : 66 667
    Points
    66 667
    Billets dans le blog
    1
    Par défaut
    a mon avis le problème ne vient pas de l'affectation dasn le innerHTML du div mais plutot de la requete ...
    essaye de faire un alert du responsetext et à mon avis tu verras que la concaténation se fait à ce niveau là ...

    donc soit la requete au niveau du responseText n'est pas bonne soit ton responseText concatène ... il faudra le vider avant ...
    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 !

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Lol, je m'habituerai jamais à ca !

    Comment la fonction a-t-elle une référence à l'objet Xhr ???

    Bien sur, ca marche car JS prend en charge les références des fonctions parentes dans les fonctions générées à l'intérieux de celles-ci mais normalement l'objet Xhr s'obtient par this...

    De même pour tous les autres arguments de ce genre de fonction (ex: id, titre, page, ...)

    Mais puriste que je suis....
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    J'y avais en effet déja pensé. Si je rajoute l'alerte comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    xhr_object.onreadystatechange = function(){
    	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    	if(xhr_object.readyState == 4 && xhr_object.status == 200){
    		alert(xhr_object.responseText);
    		document.getElementById("info").innerHTML=xhr_object.responseText;
    	}
    J'obtiens bien une réponse différente et non concaténée à chaque clic de bouton.. Je devrais alors trouver un moyen pour vider le champ avant l'appel à la fonction.. Mais comment faire ?

    Merci

    Kev.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Ton element info, il se situe ou dans ta page web ? Il est ajouté par AJAX ?
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Voici mon élément info placer dans ma page web:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="info">
    </div>
    J'aimerai donc affichier du texte entre ces balizes quand je clic sur un bouton avec certaines options.

  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 : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Et tu es sur qu'il n'y a pas d'autres elements info dans ta page et dans l'AJAX que tu ajoute dans la balise ?
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Il n'y a que deux occurences du mots "info" dans ma page Celle de mon getElementById et celle de mon DIV...

    N'existe t'il pas une fonction pour vider le contenu du innerHTML avant de le remplir à nouveau ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Tu avais raison Fremy... la réponse que je générais contenait elle aussi des DIV "info", d'ou mon problème...

    Un grand merci pour ton aide

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    De rien !
    Bonne continuation
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

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

Discussions similaires

  1. [DOM] fonctions du DOM javascript
    Par aztec dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2008, 21h46
  2. [DOM] Javascript et DOM pour debutante
    Par vds2302 dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 22/08/2007, 11h09
  3. [DOM] javascript event dom
    Par pittacos dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/04/2007, 21h15
  4. Problème pour modifier du texte
    Par philippef dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/09/2006, 20h30
  5. [DOM] Javascript et DOM
    Par topolino dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 20/12/2005, 00h27

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