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] Incapabale de récupérér mes données de responseXML


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 85
    Par défaut [AJAX] Incapabale de récupérér mes données de responseXML
    Bonjour tout le monde,
    Dans mon application, j'ai un appel Ajax à une servlet qui retourne un fichier xml comme résultat.Le problème c'est que j'ai pas pu récupérer mes éléments du document coté javascript.
    voila le code de ma servlet :

    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
     
    ...
    StringBuffer sbuffer = new StringBuffer();
    sbuffer.append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
    if(displayList.size()!=0){
    	sbuffer.append("<spectaculars>");
    	for (DisplayDTO displayDTO : displayList) {
    		sbuffer.append("<spectacular>");
    		sbuffer.append("<id>"+displayDTO.getDisplay().getId()+"</id>");
    	        sbuffer.append(
    "label>"+displayDTO.getDisplay().getProductName()+"</label>");
    		sbuffer.append("<longitude>"+displayDTO.getLongitude()+"</longitude>");
    		sbuffer.append(
    "<lattitude>"+displayDTO.getLattitude()+"</lattitude>");
    		sbuffer.append("</spectacular>");
    	}
    	sbuffer.append("</spectaculars>");
    	response.setContentType("text/xml");
    	response.setHeader("Cache-Control", "no-cache"); 
    	response.getWriter().write(sbuffer.toString()); 
    	}else{
    response.setStatus(HttpServletResponse.SC_NO_CONTENT);
    }
    ...
    Quand j'alerte coté javascript "xhr.responseXML" je trouve bien un objet.
    Mais quand j'alerte "xhr.responseXML.getElementsByTagName("spectaculars").length", j'obtiens 0
    j'ai alerté ".legth" car lorsque j'ai voulu recupérér "xhr.responseXML.getElementsByTagName("spectaculars")[0]" il m'a retourné null.
    dernière information : J'ai débogué le code de ma servlet et je suis sur que le ficher xml créé contient des éléments.
    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.responseXML.documentElement.getElementsByTagName("spectaculars").length
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 85
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.responseXML.documentElement.getElementsByTagName("spectaculars").length
    avec ça j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'documentElement' a la valeur NULL ou n'est pas un objet.
    A titre d'infos : j'utilise IE7.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il faudrait voir ton code JavaScript et si possible, ton xml.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 85
    Par défaut
    Avec plaisir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function initRequest() {
    if (window.XMLHttpRequest) {
    	return new XMLHttpRequest();
    } else {
    	if (window.ActiveXObject) {
    		return new ActiveXObject("Microsoft.XMLHTTP");
    	}
    }
    }
    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
     
    function findSpectaculars() {
    	var url = "Mon instanciation de  l'url"
    	var xhr = initRequest();
    	xhr.onreadystatechange = function () {
    		if (xhr.readyState == 4) {
    			if (xhr.status == 200) {
    				var spectaculars = xhr.responseXML.documentElement.getElementsByTagName("spectaculars");
    	                  alert(spectaculars.length);
    			} else {
    				if (xhr.status == 204) {
    				}
    			}
    		}
    	};
    	xhr.open("GET", url, false);
    	xhr.send();
    }

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    A priori, pas d'erreur flagrante dans ton code, en revanche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sbuffer.append(
    "label>"+displayDTO.getDisplay().getProductName()+"</label>");
    c'est une faute de frappe ?
    Sinon, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sbuffer.append(
    "<label>"+displayDTO.getDisplay().getProductName()+"</label>");
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 85
    Par défaut
    Non c'est juste une faute de frappe.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    A priori, il faudrait voir du coté du XML s'il est bien formé.
    As-tu essayer de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xhr.responseText);
    pour voir ce que cela donne ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 85
    Par défaut
    quand j'ai alerté "xhr.responseText" il m'a affiché le code source de ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <html>
       <head>
            <title>
             .....

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Vérifie la valeur de l'url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var url = "Mon instanciation de  l'url"
    dans ce cas...
    Au passage, pourquoi utilises-tu le mode asynchrone ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET", url, false);
    Enfin, attention aux problèmes de cache, pour les éviter, ajoutes un timestamp à ton url :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var timestamp = new Date();
    var url = "Mon instanciation de  l'url?tt=" + timestamp;
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 85
    Par défaut
    l'url est bien correcte. Si non j'aurai pas pu déboguer et voir mon document xml coté java.
    Merci en tout cas pour avoir essayé de m'aider.

  12. #12
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Essaie peut-être avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    xhr.open("GET", url, false);
    xhr.send(null);

  13. #13
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Citation Envoyé par lion13 Voir le message
    quand j'ai alerté "xhr.responseText" il m'a affiché le code source de ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <html>
       <head>
            <title>
             .....
    Tu ferais pas un forward dans ta servlet par hasard? Parce que c'est pas du tout normal qu'il te renvoie le code de ta page.

Discussions similaires

  1. [MySQL] Afficher mes données dans un tableau HTML
    Par lassmust dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 02/03/2006, 11h43
  2. Meilleur méthode pour stocker mes données
    Par cyberlewis dans le forum Windows
    Réponses: 6
    Dernier message: 03/07/2004, 11h53
  3. [Debutant] Stocker mes données en XML ou BDD ?
    Par buffyann dans le forum XQUERY/SGBD
    Réponses: 32
    Dernier message: 10/06/2004, 23h54
  4. Stocker mes données
    Par Le Fou dans le forum C++Builder
    Réponses: 23
    Dernier message: 05/07/2002, 15h02

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