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

jQuery Discussion :

Parsererror en répurérant du XML avec Firefox


Sujet :

jQuery

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 123
    Points
    123
    Par défaut Parsererror en répurérant du XML avec Firefox
    Salut à tous,

    J'ai une page web faite en .NET/C#, qui retourne du XML. Le code ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Response.AddHeader("Content-type", "text/xml");
    Response.Write("<?xml version='1.0' encoding='utf-8' ?>");
    Response.Write("monXml");
    Quand j'ouvre la page dans un browser, tout va bien, j'ai ce genre de contenu qui est renvoyé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version='1.0' encoding='utf-8' ?><oList><aObjects>Hello World</aObjects></oList>
    Ce que je veux faire ensuite c'est appeler cette page en Ajax avec jQuery.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                    $.ajax({url: "monURL",
    		    dataType: "xml",
    		    success: function(xml) {
    			doSomething();
    		    }, 
                        error: function(xmlhttp, status, error){alert(status+' '+error)
                        }
                    });
    Ca fonctionne bien avec IE (6 et 8), mais pas avec Firefox (3.6.8).
    Sous Firefox j'ai l'erreur suivante :
    parsererror TypeError: a is null

    Que se passe-t-il avec Firefox ?

  2. #2
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 : 701
    Points : 597
    Points
    597
    Par défaut
    Qu'indique FIREBUG onglet Console ?

    Rien à voir avec ton problème, enfin je suppose.
    Pourquoi tu fais pas directement ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    $.ajax({url: "monURL",
    		    dataType: "xml",
    		    success: doSomething;, 
                        error: function(xmlhttp, status, error){alert(status+' '+error)
                        }
                    });
     
    //Il faut que la fonction doSomething soit avant ta requête ajax ou bien dans la fonction qui déclenche la fonction ajax

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 123
    Points
    123
    Par défaut
    Merci pour le conseil sur la syntaxe, c'est effectivement plus élégant comme ça

    Pour la console Firebug, voila ce qu'elle me retourne.

    En-têtes :

    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
     
    Réponse
    Date	Mon, 09 Aug 2010 09:00:56 GMT
    Server	Microsoft-IIS/6.0
    X-Powered-By	ASP.NET
    X-AspNet-Version	2.0.50727
    Cache-Control	private
    Content-Type	text/xml; charset=utf-8
    Content-Length	1683
     
    Requête
    Host	monServeurWebServiceProvider
    User-Agent	Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
    Accept	application/xml, text/xml, */*
    Accept-Language	fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding	gzip,deflate
    Accept-Charset	ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive	115
    Connection	keep-alive
    Content-Type	application/x-www-form-urlencoded
    Referer	monURLclient
    Origin	monServeurWebServiceConsummer
    Les 2 machines (celle qui fournit le XML et celle qui le consomme) sont sur le même domaine.

    L'onglet "Réponse" de la console firebug est vide.

    Et l'onglet XML me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Erreur d'analyse XML : aucun élément trouvé Emplacement : moz-nullprincipal:{f99eeabc-9369-4dbf-a96f-621c4ba8f267} Numéro de ligne 1, Colonne 1 :
     
    ^
    Ce qui est étrange est que si je tappe l'URL qui est appelée en Ajax directement dans une fenêtre Firefox, le XML s'affiche proprement.
    Et la page en général tourne bien sous IE6 et IE8.

    Apparament c'est jQuery qui essaye d'évaluer le XML retourné, et qui n'y arrive pas dans Firefox. Mais alors pourquoi, c'est une bonne question

  4. #4
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    essaye de passer un petit coup de nodeCleaner sur le xml avant de le parser ?

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 123
    Points
    123
    Par défaut
    Trouvé... en fait c'était quand-même un problème de cross-domain (on ne peut pas récupérer du XML en Ajax depuis une machine d'un autre domaine). Avec IE ça fonctionne, mais avec Firefox ou Safari non. Désolé, c'est pour des raisons propres à l'intranet de mon entreprise ^^ (on a des intégristes pro-microsoft...)

    Pour ceux que ça intéresse, il y a (au moins) deux solutions à ce problème :
    - faire une page sur un serveur du même domaine que le client, qui va aller pêcher le XML (avec du code serveur, ASP, PHP, etc...). Ensuite on appelle cette page depuis le code jQuery.
    - si vous avez accès au code du service source, lui faire retourner du JSON au lieu du XML, et utiliser le dataType JSONP depuis jQuery.

    Plus ça va, plus je me demande si je ne vais pas complètement abandonner le XML au profit de JSON pour la communication entre applis web.

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

Discussions similaires

  1. Traitement XML avec Firefox
    Par Capt. Flame dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/05/2008, 16h40
  2. responseText en XML avec firefox ?
    Par kaptnkill dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/04/2008, 16h10
  3. [XML][XSL][FOP] transformation xml avec fop
    Par Le Marlou dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 05/12/2003, 16h58
  4. []générer et LIRE du xml avec vb: sélection d'un node
    Par chris21 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 19/09/2003, 13h14
  5. generer xsl depuis xml avec balises inconues ?
    Par cedre dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 24/06/2003, 09h00

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