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] Ajax passe sous IE, "undefined" sous Firefox


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut [AJAX] Ajax passe sous IE, "undefined" sous Firefox
    bonjour,

    je m'excuse d'avance pour la question vague et dépourvue de contexte. Je viens d'arriver en stage et on m'a confié la tâche ingrate de porter une application énorme J2EE ne fonctionnant que sous IE vers tous (rien que ça) les autres browsers...

    J'ai une erreur très commune concernant AJAX que je retrouve dans plusieurs pages. Cela fait 2 jours que je me tape la tête contre le mur, je ne sais plus où chercher l'erreur.

    Mes zones Ajax affichent leur contenu sous IE, et sous Firefox je vois juste une ou plusieurs fois le texte "undefined"....

    Pouvez-vous me donner la liste la plus exhaustive possible des sources de problèmes potentielles ?

    Je vous remercie, au vu de la dimension de l'application, je suis à court d'idées pour identifier le problème...

  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,
    sûr que si on pouvait voir la partie du code qui génère ces "undefined", ça aiderait .

    Le cas le plus courant concerne une instruction JS faisant référence à une variable ou un objet (ou une de ses propriété) inexistant : soit un objet non présent dans la page, soit une référence à une propriété non gérée pour l'objet ciblé.

    A+

  3. #3
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Déjà installe FireBug si ce n'est pas déjà fait.

    Et vérifie sous l'onglet "script" de FireBug, en mettant de points d'arrêt, la raison de ton "undefined".

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut
    Ok, ça doit être mon problème.

    j'ai effectivement quelques variables à null sous Firebug, celles-ci ne sont pas null sous Internet Explorer.

    Je récupère avec la méthode getElementById, qui renvoit "null" pour certaines valeurs sous Firefox. J'ai donc cherché à bien renseigner le couple "name" ET "id" partout où j'ai pu, mais cela n'a rien résolu.

    J'ai alors tenté de substituer getElementById par getElementsByName, juste pour tester.

    Sous IE, getElementsByName me renvoie une liste non vide, et à nouveau, Firefox renvoie une liste vide...

    Je ne comprends pas comment IE passe avec les 2 méthodes et Firefox avec aucune. Comment expliquer cela ?

    (je fournirais bien du code mais l'appli en compte des dizaines de milliers de lignes et il m'est impossible d'en isoler un morceau cohérent à poster ici. Sans parler du fait que ça a été codé avec les pieds, mais je m'arrêterai là pour la mauvaise langue)

  5. #5
    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
    Citation Envoyé par franklin626 Voir le message
    Je ne comprends pas comment IE passe avec les 2 méthodes et Firefox avec aucune. Comment expliquer cela ?
    Il y a une raison assez simple qui explique pas mal de problèmes de ce type :
    IE confond name et id.

    Aussi, sous IE, si on définit le name d'un objet mais pas son id, getElementById() fonctionnera quand même (mais pas sous FF).

    Par contre, si on donne à un élément un id correspondant au name d'un autre élément, IE plante (car il "considère" que l'id est dupliqué). Les autres nav, non.

    Dans le même ordre d'id (), si on donne à une variable un nom correspondant à l'id d'un élément de la page, IE plante aussi
    Cette fois-ci, c'est à cause d'une syntaxe historiquement autorisée sous IE : faire référence à un objet directement via son id :
    Pour un objet dont l'id est "toto", est l'équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("toto").value
    On voit bien ici la confusion qu'engendrerait pour le nav (enfin ... pour IE) l'utilisation d'une variable "toto" ...

    Bref, les raisons de dysfonctionnement ne manquent pas

    A+

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut
    je vois. Bon j'ai dupliqué tout ce que je pouvais, et je n'ai pas de plantage sous IE.

    N'y aurait-il pas d'autre explication que celles liées à name/id ? Cela voudrait juste dire que j'ai zappé un name ou id du coup, mais je ne vois pas où j'aurais pu.

    Et cela ne choque personne que même getElementsByName ne passe pas du tout sous Firefox ?

  7. #7
    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
    Citation Envoyé par franklin626 Voir le message
    Et cela ne choque personne que même getElementsByName ne passe pas du tout sous Firefox ?
    Ben le problème est que le fonctionnement est différent : getElementsByName() renvoie un tableau d'éléments (le name n'ayant pas de contrainte d'unicité).
    Pour reprendre mon exemple précédent, pour attaquer le même objet via son name, ça serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName("toto")[0].value
    A+

  8. #8
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Un autre problème de IE et la navigation Ajax.

    C'est dans les tableaux la balise <TBODY> est ajouté par FF ce qui par moment déroute les ascendants et descendants DOM.

    FF corrige beaucoup de problème script par lui même .
    C'est pour cela qu'il est plus facile de développer dessus et de déboguer ensuite IE (Enfin pour ma part)

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

Discussions similaires

  1. [AJAX] Ajax "undefined" sous Firefox
    Par mess is lore dans le forum AJAX
    Réponses: 5
    Dernier message: 04/08/2010, 18h52
  2. [AJAX] Fonction passe sous ie pas firefox
    Par arthuro45 dans le forum AJAX
    Réponses: 7
    Dernier message: 13/03/2010, 10h25
  3. [AJAX] ajax et xml ne fonctionnant pas sous Firefox
    Par Phpdebut dans le forum AJAX
    Réponses: 7
    Dernier message: 03/02/2010, 12h15
  4. [AJAX] AJAX ne passe pas sur IE
    Par bdaboah dans le forum AJAX
    Réponses: 11
    Dernier message: 27/08/2009, 14h30
  5. [AJAX] XHR nb>=2 en parallèle sous FireFox
    Par belzee dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/04/2007, 19h30

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