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] Réponse XML - Functions Javascript


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut [AJAX] Réponse XML - Functions Javascript
    Bonjour tout le monde,

    Suite à ce post :
    http://www.developpez.net/forums/vie...439640#2500971
    J'ai voulu essayer mais ca ne marche pas sous IE...
    Voici ce que je fais :

    J'ai un bouton, quand je clique sur celui ci je fais une requete AJAX dans le but de remplir un div avec du HTML mais surtout dans le but de récupérer et donc de créer à la volé une fonction javascript que le serveur m'envoie.

    Function qui gère l'action du bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (document.getElementById('test_button'))
            {
                    document.getElementById('test_button').onclick=function()
                    {
                            sendDataXML('POST','test_xml.php','valeur='+escape(document.getElementById('test_text').value),document.getElementById('test_result'));
                            document.getElementById('test_result').innerHTML='Veuillez patienter...Requête en cours';
                    }
            }
    Function sendDataXML (les lignes importantes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function sendDataXML(method, url, data, noeudDest)
    {
    .....
                    xmlRequest.overrideMimeType('text/xml');
    ......
                     if (xmlRequest.status == 200)
                     {
                          noeudDest.innerHTML="";                                          addChild(noeudDest,xmlRequest.responseXML.documentElement);                                        
    }
                            }
    .....
    }
    Et enfin le fichier test_xml.php :
    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
    <?
    include_once($_SERVER['DOCUMENT_ROOT']."global/lib.inc.php");
    header('Content-type: text/xml; charset=iso-8859-15');
    ?>
    <html>
     <body>
      <script type="text/javascript">
    function toto(){
      alert('bonjour <?=$_POST['valeur']?>');
    }
    toto();
      </script>
      Text en <b>HTML</b>
     </body>
    </html>
    Sachant que la function sendDataXML utilise ceci:
    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
    function clone(elem){
          if(elem.nodeName == "#text")
             return elem;
     
          c = document.createElement(elem.nodeName);
          if(elem.hasAttributes()){
             for(var i=0;i<elem.attributes.length;i++){
                var curr = elem.attributes[i];
                c.setAttribute(curr.name,curr.value);
     
             }
          }
          return c;
       }
     
    function addChild(par,enf){
          if(enf.childNodes.length > 0){
             var tmpe = new Array();
             while(enf.childNodes.length > 0){
                var elem = enf.removeChild(enf.firstChild);
                tmpe.push(elem);
             }
             if(enf.parentNode){
                var epar = enf.parentNode;
                var el = epar.removeChild(enf);
                par.appendChild(clone(el));
             }
             else
                par.appendChild(clone(enf));
             var cmpt=0;
             while(tmpe.length>0){
                this.addChild(par.lastChild,tmpe.shift());
                cmpt++;
             }
          }
          else{
             par.appendChild(clone(enf));
          }
       }
    Dans le post auquel je fais référence, Grepack a eu aussi une erreur sous IE, je ne sais pas si tu as réussi à la corrigé ...

    Voila pour moi l'erreur se situe dans la fonoction addchild() mais je ne suis pas sur..

    Merci d'avance

    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    remplaces le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(elem.hasAttributes()){
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(elem.attributes.length > 0){
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Donc donc,

    J'avance doucement...
    Déjà, .overrideMimeType n'existe pas sous IE, ca m'a corrigé un bug

    Ensuite Siddh ton remplacement fais planté IE d'une manière que je n'avait encore jamais vu !!!

    Ca plante le truk violament, avec le message d'erreur windows (Avec envoyer, Ne pas envoyer etc..)

    Mais bon je suis sur qu'on est pas loin 8)
    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut

    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    bon deja, vires html et body de ce que tu retournes meme si je pense pas que ça ait d'incidence (mais ca me laisse le temps de réfléchir)
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  6. #6
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Oué oué !!

    Erreur que je viens de corriger

    elle venait de la ligne :
    header('Content-type: text/xml; charset=iso-8859-15');
    dans le fichier test_xml.php

    Voila, il me reste toujours une erreur "Objet requis" seulement sous IE

    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  7. #7
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    if(elem.attributes){

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    a quelle ligne il te dit que ca correspond
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Ok donc Matthieu2000 j'ai essayé cette ligne mais ca ne marche pas non plus...

    Et Siddh, j'ai enlevé les balises html et body, je les ai remplacer par une seule balise <div> et </div> mais rien non plus j'ai toujours la meme erreur...

    Je vais essayé de débugguer a coup d'alert ligne par ligne, je vous tiens au courant

    Merci encore, et bon si vous avez encore des idées je prends

    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  10. #10
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    L'erreur vient de la première ligne de la fonction addchild() apparement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function addChild(par,enf){
     
        alert("plop");
        if(enf.childNodes.length > 0){
        alert("plup");
            var tmpe = new Array();
             while(enf.childNodes.length > 0){
                var elem = enf.removeChild(enf.firstChild);
                tmpe.push(elem);
             }
    Le plup n'apparait pas...
    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  11. #11
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    noeudDest.innerHTML="";                                          
    alert(xmlRequest.responseText);
    addChild(noeudDest,xmlRequest.responseXML.documentElement);
    ca se trouve c est ta reponse qu'a un probleme
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  12. #12
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div>
      <script type="text/javascript">
    function toto(){
      alert('bonjour test');
    }
    toto();
      </script>
      Text en <b>HTML</b>
      </div>
    Voila le contenu du alert
    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  13. #13
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addChild(noeudDest,xmlRequest.responseXML.documentElement.firstChild);
    ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  14. #14
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Aprés encore plusieurs jeu de test, je m'apercois qu'a l'entrée de la fonction addchild(par,enf)

    enf est null se serait donc a l'appelle que ca foire..

    En gros est ce que IE connais :xmlRequest.responseXML.documentElement

    EDIT: Avec firstChild rien de nouveau, une régression sous Firefox
    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xmlRequest.responseXML.documentElement.nodeName);
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  16. #16
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Ouép bah comme je disais au dessus,
    xmlRequest.responseXML.documentElement est null

    Donc sous IE ca plante et sous FF ca m'a affiché div

    C'est quand meme bizarre que ca soit vide..... alors que xmlRequest.responseXML ne l'est pas ...
    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  17. #17
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    et si tu rajoutes en haut de ton document ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  18. #18
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Utilises tu le mode Synchrone ou Asynchrone ?

  19. #19
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c est juste que ie n'interprete pas le retour comme du xml, il l'a dans responseText mais pas dans le xml
    Firefox, avec le override met en xml automatiquement
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  20. #20
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Siddh : J'y ai cru.. mais nan rien n'y change

    Matthieu2000 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlRequest.open(method, url, true);
    J'utilise donc la méthode Asynchrone


    Edit : Siddh comment je dis a IE de le considéré comme une XML ?

    Autre question ? Ca n'est arrivé qu'a moi ???
    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AJAX] ajax et function javascript
    Par bailamos dans le forum AJAX
    Réponses: 10
    Dernier message: 17/02/2010, 13h16
  2. [AJAX] Ajax optimisation et function javascript !
    Par MaxLaMenaX dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/02/2009, 12h15
  3. [AJAX] Réponse XML
    Par sylsau dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/12/2006, 23h50
  4. [AJAX] JavaScript, Ajax et XML
    Par tclariss dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/10/2006, 22h53
  5. xml et javascript
    Par mati dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/08/2005, 15h06

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