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 :

[JScript][Deb.] Courts codes à debugger


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 94
    Par défaut [JScript][Deb.] Courts codes à debugger
    Bonjour,

    je ne veux pas polluer les forums alors je créé un topic commun pour vous proposer d'exposer nos problèmes ponctuels liés à des erreurs de codes (petites portions).

    En ce qui me concerne, voici le code qui me pose problème:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    var xhr = getXhr()
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function(){
    	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200){
    				//alert(xhr.responseText);
    	
    				getNodes("product");				
    				}
    		}
    		xhr.open("POST","http://www.siteweb.com/blabla.jsp",true);
    		xhr.send(null);
    
    
    				
    			
    
    function getNodes(balise)
    {
    	alert("tessssssst");
      var balises = document.getElementsByTagName(balise);
      for (var i=0; i < balisesTables.length; i++) {
    	alert("t2");
        var table = balises[i];
        alert("balise: "+balise+"   |   "+"attribut id:"+ table.getAttribute("id"));
      }
    
    }
    
    
    
    function getXhr()
    {
    var xhr = null; 
    	 
    	if(window.XMLHttpRequest) // Firefox et autres
    	   xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    	   try {
                    xhr = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                }
    	}
    	else { // XMLHttpRequest non supporté par le navigateur 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   xhr = false; 
    	}
    
     return xhr;
    }

    Bon le soucis réside dans ma fonction getNodes. Le "tessssst" s'affiche bien, donc ma fonction est bien appelée. Mais aucun traitement ne semble être effectué sur le document XML que je récupère de ma requête HTTP par XHR.
    Pourtant en faisant un alert(xhr.responseText); je reçois bien le contenu XML.


    Pouvez-vous m'aider?

    Merci

  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,
    Citation Envoyé par ninox_
    Bon le soucis réside dans ma fonction getNodes. Le "tessssst" s'affiche bien, donc ma fonction est bien appelée. Mais aucun traitement ne semble être effectué
    Normal : "balisesTables" n'existe pas, apparament ("balises", oui)

    A+

  3. #3
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    tu passe un string en paramètre ???

    puis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      var balises = document.getElementsByTagName(balise);
    tu réinitialises la variable en la déclarant

    quel intéret ?
    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 !

  4. #4
    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 SpaceFrog
    quel intéret ?
    Le pluriel

  5. #5
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Par défaut
    xhr.open("POST","http://www.siteweb.com/blabla.jsp",true);
    xhr.send(null);
    N'aurais-tu pas un problème là également ?
    Car il me semble fortement (car je viens de m'en servir aussi) que "send(null)" s'utilise avec la méthode GET et non POST

  6. #6
    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 amestoche
    N'aurais-tu pas un problème là également ?
    Car il me semble fortement (car je viens de m'en servir aussi) que "send(null)" s'utilise avec la méthode GET et non POST
    Citation Envoyé par ninox_
    Pourtant en faisant un alert(xhr.responseText); je reçois bien le contenu XML.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 94
    Par défaut
    Citation Envoyé par E.Bzz
    Bonjour,
    Normal : "balisesTables" n'existe pas, apparament ("balises", oui)

    A+

    Oh lalala.... oui effectivement. Il s'agit de la variable balises dont je me sers. Merci de me faire remarquer cette étourderie.

    Ensuite comment faire pour passer mon paramètre en argument de la fonction getNodes(), qui prend un string balise (appelez ca comme vous voulez en Jscript) ?


    mon appel à la fonction:
    getNodes("product");

    ca ne fonctionne pas.
    Faut-il que je fasse apparaitre une étape intermédiaire du genre:
    var input = "product";
    getNodes(input);



    Merci

  8. #8
    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 ninox_
    mon appel à la fonction:
    getNodes("product");

    ca ne fonctionne pas.
    Faut-il que je fasse apparaitre une étape intermédiaire du genre:
    var input = "product";
    getNodes(input);
    Vus les "???" de SpaceFrog, je dirais "oui"

    ... par contre, utilise un autre nom que "input" (mot réservé JS).

    A+

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 94
    Par défaut
    Ca ne fonctionne tjrs pas...
    Je comprends pas où est le soucis....

  10. #10
    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 ninox_
    Ca ne fonctionne tjrs pas...
    C'est à dire ?
    Ca se "passe" comment ?
    Je suppose qu'en ayant la structure interrogée par ton script, ça serait + facile ...

    A+

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 94
    Par défaut
    Ca m'affiche bien mon alert tessst , mais le code de getNodes, cad l'affichage des infos lors de la recherche des balises "product" et de son attribut "id" ne donne absolument rien.

    J'ai bien l'impression que dans la fonction getNodes, le var balises = document.getElementsByTagName(balise); ne soit pas apprécié.

    En effet, je fais ma requete dans le corps de mon script, en dehors de la fonction. Et de plus, je ne passe pas le xhr en paramètre à getNodes().

    Cela doit en être la raison, ne pensez-vous pas?
    document. doit être à NULL.

  12. #12
    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
    Si ce à quoi tu essayes d'accéder, c'est la réponse d'Ajax, effectivement, il faut d'abord l'intégrer à ta page pour pouvoir utiliser ces syntaxes.

    Ceci dit, je suis pas sûr d'avoir tout compris

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 94
    Par défaut
    Et moi je ne suis pas sûr de saisir ce que tu essayes de me dire...

    En fait, voilà le topo:
    Je bosse sur l'automatisation de tests Web (scénarios) sous un logiciel qui me permet d'envoyer des requêtes au site, et à partir de la réponse que je récupère du serveur, cad du contenu XML des pages demandées par jsp, je veux parcourir ce flux/fichier XML pour tester l'existence de certains nodes.


    Comme je vous l'ai dit, lorsque je teste ce que je récupère de ma requête, j'obtiens bien du XML.
    alert(xhr.responseText);


    Maintenant, je ne comprends pas pourquoi lorsque je fais mon code pour chercher les éléments, celui-ci n'a pas l'air de s'éxecuter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var balises = document.getElementsByTagName("product");
      for (var i=0; i < balises.length; i++) {
    	alert("t2");
        var table = balises[i];
        alert("balise: "+balise+"   |   "+"attribut id:"+ table.getAttribute("id"));
      }
    Aucun alert("t2") affiché. On ne rentre pas dans la boucle for... Bizarre.
    Or dans mon fichier XML, il y a bel et bien des <product id="" ...> </product>



    Est-ce plus clair ?
    Merchi

  14. #14
    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 ninox_
    Est-ce plus clair ?
    Yes, toujours plus : ça sera bientôt transparent

    Il me semble (mais je suis pas XMLien) qu'il y a un niveau à ajouter après document. pour faire référence au contenu XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName("product");
    //parse using builder to get DOM representation of the XML file
    Document dom = db.parse("document.xml");
    trouvé
    Y a pas qqchose en commun ?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 94
    Par défaut
    Je sais pas.
    Mais le soucis c'est que je pourrais sans doute pas le parser comme tu me montres, vu que ce que je récupère ce n'est pas un fichier .xml physique, c'est plus un flux, que je récupère par XHR en fait.

    D'où ma question connexe sur ce même forum pour savoir comment je pouvais créer un fichier côté client, parce que je voulais enregistrer le code xml que je recevais dans un simple fichier .txt.
    Malheureusement ce n'est pas possible, et le JScript n'autorise pas la création de fichier côté client, pour des raisons de sécurité.

    Donc tu penses qu'il y a autre chose à faire avec document. , une sorte d'initialisation peut être, pour parcourir le xml tree à partir de la racine...
    Mmmh, j'ai beau chercher il y a pleins d'exemples qui se contredisent sur le net. Ca me saoule.

  16. #16
    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 ninox_
    Je sais pas.
    Mais le soucis c'est que je pourrais sans doute pas le parser comme tu me montres, vu que ce que je récupère ce n'est pas un fichier .xml physique, c'est plus un flux, que je récupère par XHR en fait.

    D'où ma question connexe sur ce même forum pour savoir comment je pouvais créer un fichier côté client, parce que je voulais enregistrer le code xml que je recevais dans un simple fichier .txt.
    Malheureusement ce n'est pas possible, et le JScript n'autorise pas la création de fichier côté client, pour des raisons de sécurité.

    Donc tu penses qu'il y a autre chose à faire avec document. , une sorte d'initialisation peut être, pour parcourir le xml tree à partir de la racine...
    Mmmh, j'ai beau chercher il y a pleins d'exemples qui se contredisent sur le net. Ca me saoule.
    Ouaip !
    Effectivement !

    Une solution, pour utiliser le DOM sur cette structure, ça serait de l'intégrer à réception dans un div avec visibility:hidden (et pas display:none).
    Tu pourras ainsi y accèder avec le DOM classique.

    ... mais je suis pas sûr que ça soit tout à fait "propre"

    ... et ça m'étonne qu'on puisse pas interroger + simplement du XML retourné par Ajax.

    Y a bien un(e) XMLien(ne) qui va passer pour éclaircir ça

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 94
    Par défaut
    oui je l'espère...

    tant qu'à faire j'aimerais si possible éviter de produire un script par astuces qui rendrait le tout peu modulable.
    M'enfin dans le génial monde de la programmation, les ruses de sioux font légion et on est parfois bien content d'y avoir recours!


    a+.... waiting for help.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 94
    Par défaut
    J'ai une question toute bête qui me vient:

    si je veux lancer du code jscript de chez moi, pour interroger le serveur, il suffit juste que je créé un fichier .html avec mon code JScript de la requête.
    Est-ce bien cela ?

    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
    <html><head>
    <style type="text/css">
      <!-- xml {display: none;} -->
    </style>
    </head>
    
    
    <body onload="traitement()">
    
    <script language="JavaScript" type="text/JavaScript">
    
    function traitement(){
    
    var xhr = getXhr();
    // MON CODE ...
    
    }
    </script>
    
    
    </body>
    </html>

    Oui? Non?
    Rassurez-moi... je n'ai pas besoin d'héberger ma page sur le serveur auquel j'envoie la requête?!!

    >>> Mon code n'es pas executé du tout.
    MERCI.

  19. #19
    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 ninox_
    Oui? Non?
    Rassurez-moi... je n'ai pas besoin d'héberger ma page sur le serveur auquel j'envoie la requête?!!
    Ben une url est une url
    Que tu l'appelles d'un href dans une page, de l'action d'un form ou en la tappant directement dans la barre d'adresse, le serveur répond pareil.

    ... à condition que ça soit pas de l'intranet, qu'un éventuel firewall laisse passer, qu'y ait pas un compte spécial à avoir et tout ça, quoi

    Mais y a que toi à le savoir, ça

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 94
    Par défaut
    oké ben non rien de tout ca.
    mais je comprends pas pourquoi un simple alert("test"); n'a aucun effet dans mon script !!!

    J'ai essayé de mettre mon JScript dans Head ou Body. Rien n'y fait. Aucun résultat dans les deux cas.


    EDIT:
    ah ouais merde, sous Firefox j'affiche la console JavaScript et voici ce que je vois:
    Erreur : uncaught exception: Permission refusée d'appeler la méthode XMLHttpRequest.open
    :s

    il faut que je demande des droits supplémentaires à l'admin de la boite?

Discussions similaires

  1. Edition d'un court code HTML, tableau et retour à la ligne
    Par TheFlow dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/11/2010, 15h33
  2. Ecrire un code en plus court
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 18/10/2007, 09h33
  3. [debugger] Breakpoints sous Code::Blocks
    Par poukill dans le forum Code::Blocks
    Réponses: 2
    Dernier message: 07/02/2007, 08h26
  4. [Debugger] Problème de traçage de code
    Par vinny_the_true dans le forum MFC
    Réponses: 2
    Dernier message: 19/12/2005, 00h21
  5. [XSL] - Comment intérpréter du code JScript
    Par luimême dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 22/11/2005, 16h19

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