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 :

[AJAX] Div modifié par Ajax ne s'affiche qu'une seconde


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut [AJAX] Div modifié par Ajax ne s'affiche qu'une seconde
    Bonjour à tous,

    J'ai un souci d'affichage.
    Ma page contient plusieurs div : liste des utilisateurs, ajouter un utilisateur et modifier un utilisateur.
    Au départ s'affiche la liste des utilisateurs. Si je veux en ajouter un, tout fonctionne, la liste des utilisateurs disparaît et un formulaire d'ajout s'affiche.
    Par contre lorsque je veux modifier un utilisateur, un formulaire semblable devrait s'afficher et la liste des utilisateurs disparaître. Or ce formulaire ne s'affiche qu'une fraction de seconde et la page se recharge avec la liste des utilisateurs. Une idée d'où vient le problème ??

    Code de la fonction javascript appelée lorsqu'on veut modifier un utilisateur :
    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
     
    function modifyUser(commercial, agence) {
    	var xhr = getXhr();
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 4 && xhr.status == 200){
    			answer = xhr.responseText ;
    			document.getElementById('modifieruser').style.display = "block" ;
    			document.getElementById('modifieruser').innerHTML = answer ;
    			document.getElementById('users').style.display = "none" ;
    			document.getElementById('ajouteruser').style.display = "none" ;
    		}
    	}
    	xhr.open("POST","ajaxUsers.php",true);    
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');     
    	xhr.send("action=1&idcommercial="+commercial+"&idagence="+agence);
    }
    Je précise que j'ai la bonne réponse du fichier ajaxUsers.php et que ma fonction getXhr fonctionne également.

    Merci à ceux qui prendront le temps de me lire !

  2. #2
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    tu ne ferais pas la requete qui permet d'afficher la liste des utilisateur juste apres l'autre par hasard ?

    sinon installe l'extension Firebug pour Firefox
    ça permet de voir passer les requete Ajax.

    tu trouvera peut etre d'ou viens le probleme

  3. #3
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut
    Merci pour ta réponse (super rapide !).
    Voici l'ordre que j'ai :
    d'abord les fonctions javascript :
    newUser
    getXhr
    modifyUser
    existing
    ensuite les fonctions php de traitement des formulaires
    ensuite la page html

    Je n'ai pas l'impression que l'ordre ne soit pas le bon mais je peux me tromper.

    Pour l'instant, la liste des utilisateurs s'affiche via la page html de base. Est-ce qu'il faut que je fasse un body onload et que je fasse s'afficher cette liste via ajax ?

    Pour le debug de Firefox, je vais essayer, merci pour l'info.

  4. #4
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    si la liste des utilisateur ne s'affiche que au chargement de la page, c'est pas une question d'ordre (enfin je pense pas)
    le formulaire s'affiche dans le div a la place de la liste ? ou bien ce sont 2 div different ?
    parce que là je voit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    document.getElementById('modifieruser').style.display = "block" ;
    document.getElementById('modifieruser').innerHTML = answer ;
    document.getElementById('users').style.display = "none" ;
    document.getElementById('ajouteruser').style.display = "none" ;
    modifieruser et users c'est quoi ?

  5. #5
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut
    users et modifieruser sont les id des div correspondants respectivement à la liste des utilisateurs et au formulaire de modification (celui qui ne s'affiche q'une seconde...)
    j'ai <div id='users'>... liste des utilisateurs ... </div>
    et en-dessous <div id='modifieruser'>...vide au démarrage, formulaire si l'utilisateur a cliqué sur le bouton de modification ... </div>

  6. #6
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    et tu as ce probleme avec IE et FF ? ou seulement IE ?

  7. #7
    Membre éclairé
    Profil pro
    Développeur multimédia
    Inscrit en
    Mai 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Mai 2005
    Messages : 57
    Par défaut
    Ta fonction me semble ok.

    Par contre je ne sais pas comment elle est lancée. Peut-être lances-tu deux requêtes à la suite...

    -- EDIT --
    J'avais pas vu les réponses... C'est un forum les gars, pas un chat !! MDR

    Pourquoi n'utilises tu pas un script déjà tout fait qui exécute des "Va chercher et remplace !" en Ajax du type : http://script.aculo.us/

    Il dispose d'une fonction Ajax.Updater(); Trés pratique. Fonctionnel sous tous les navigateurs...

  8. #8
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut
    J'ai résolu le problème, mais c'est très étrange, si vous avez une explication à me donner je veux bien ça peut toujours servir.
    J'ai changé mon <input type='submit' ... onclick='modifyUser(...)'>
    en
    <button ... onclick='modifyUser(...)'>Modifier</button>
    et ça fonctionne !!!
    Je n'y comprends rien...

  9. #9
    Membre éclairé Avatar de jmulans
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 397
    Par défaut
    je me méfie des type="submit", ça fait toujours des trucs inattendus
    je pense que ça soumettais automatiquement ton formulaire

  10. #10
    Membre éclairé
    Profil pro
    Développeur multimédia
    Inscrit en
    Mai 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Mai 2005
    Messages : 57
    Par défaut
    oui, effectivement, ça exécute le script dans le onclick, puis ça soumet le formulaire (normal pour un submit). Tu peux essayer onclick="fonctionjavascript(); return false;". A priori, il mne devrait pas soumettre... Mais ça reste à vérifier...

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

Discussions similaires

  1. Relancer jQuery dans un <Div> appelé par AJAX ?
    Par 88mons dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 22/01/2013, 18h24
  2. Rendre "droppable" une div généré par Ajax
    Par Freeluvs dans le forum jQuery
    Réponses: 1
    Dernier message: 18/03/2011, 08h55
  3. Réponses: 3
    Dernier message: 11/05/2010, 05h16
  4. Réponses: 1
    Dernier message: 25/09/2009, 12h03
  5. [AJAX] Affichage de requête PHP dans un div créé par Ajax
    Par will89 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/12/2007, 19h00

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