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écupération data xml depuis AJAX


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Par défaut [AJAX] récupération data xml depuis AJAX
    Bonjour,
    Je fait exécuter une requête via un fichier php appelé depuis un fichier js. La requête s'exécute bien (je fait une copie dans un fichier xml). Mais je ne récupère rien dans response.xml dans le fichier js.
    Quelqu'un a-t-il déjà galéré là-dessus svp ? Cela fait un mois que je tourne en rond et en bourrique d'ailleurs aussi !

  2. #2
    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
    Sans code, je vois mal ce qu'on peut faire...

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Par défaut oui voici le code
    MErci DoubleU..Tu as raison mais je ne voulais pas "décourager" les bonnes âmes prêtes à se pencher sur ce pb. Voici donc le code php :
    //déclaration nouveau ficher
    //$doc = new DOMDocument('1.0', 'UTF-8');
    $doc = new DOMDocument('1.0', 'iso-8859-1');
    $result = $doc->createElement('result');
    $bid=$result->setAttribute('id',"resultat");


    if ($retour !="1")
    {
    $requete = $doc->createElement('requete', $Req);
    $erreurSql = $doc->createElement('message',ora_error($BaseOracle->MyIdSess));
    $erreur = $doc->createElement('erreur');
    $erreur->appendChild($requete);
    $erreur->appendChild($erreurSql);
    $result->appendChild($erreur);
    }
    else
    {
    // Résultat de la requête
    While ($rst=$BaseOracle->MapArray()) // récupération du résultat de la requête dans l'objet $rst
    {
    $result->appendChild($doc->createElement('PAT_IPP', $rst["PAT_IPP"]));
    $result->appendChild($doc->createElement('ETC_NOM', $rst["ETC_NOM"]));
    $result->appendChild($doc->createElement('ETC_PRN', $rst["ETC_PRN"]));
    $result->appendChild($doc->createElement('ETC_DDN', $rst["ETC_DDN"]));
    }
    }

    $doc->appendChild($result);

    // sauvegarde du document
    $test = $doc->save("resultat.xml");
    echo $doc->saveXML();

    Pour le js :
    var http_request = false;
    var param="var1="+typebase+"&var2="+host+"&var3="+port+"&var4="+base+"&var5="+id+"&var6="+pass+"&var7="+opt+"&var8="+req;

    if (window.XMLHttpRequest)
    { /* Mozilla, Safari, IE7... */
    http_request = new XMLHttpRequest();
    var navigateur=1;
    if (http_request.overrideMimeType)
    {
    http_request.overrideMimeType('text/xml; charset=ISO-8859-1');
    /* http_request.overrideMimeType('text/xml; charset=UTF-8'); */
    }
    }
    else if(window.ActiveXObject)
    { /* IE <7 */
    try{
    http_request = new ActiveXObject("Msxml2.XMLDOM"); /* IE6 */
    var navigateur=2;
    }catch(e){
    try{
    http_request = new ActiveXObject("Microsoft.XMLDOM"); /* IE5 */
    var navigateur=3;

    }catch(e){}
    }
    }
    if (!http_request)
    {
    alert('Cannot create an XMLHttp instance');
    return false;
    }
    /* var url2=url+param; */
    http_request.open('POST', url, true);
    /* http_request.open('GET', url2, true); */
    http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");

    http_request.onreadystatechange = function()
    {
    if (http_request.readyState != 4)
    {
    /* document.getElementById(div).innerHTML = "<div class='loading'>Loading...</div>"; */
    }
    else
    {
    if (http_request.status == 200)
    {
    if (navigateur==1)
    {
    var results=http_request.responseXML;
    }
    else
    {
    var results=http_request.loadXML(http_request.responseText);
    }
    suite(results);
    }
    else
    {
    alert('There was a problem with the request.');
    }
    }
    }
    http_request.send(param);
    /* http_request.send(null); */
    }

    function suite(r)
    {
    var enreg=r.getElementsByTagName("RESULT");
    var nombre=enreg.length;
    alert(nombre);
    ...etc... nombre est toujours égal à "0" alors que le fichier xml donne :
    <?xml version="1.0" encoding="iso-8859-1"?>
    <result id="resultat"><PAT_IPP>3098</PAT_IPP><ETC_NOM>ABADIE</ETC_NOM><ETC_PRN>Amelie</ETC_PRN><ETC_DDN>18/06/50</ETC_DDN><PAT_IPP>60730</PAT_IPP><ETC_NOM>ABADIE</ETC_NOM><ETC_PRN>FRANCIS</ETC_PRN><ETC_DDN>27/05/36</ETC_DDN><PAT_IPP>37362</PAT_IPP><ETC_NOM>ABADIE</ETC_NOM><ETC_PRN>Francis</ETC_PRN><ETC_DDN>01/11/56</ETC_DDN><PAT_IPP>63397</PAT_IPP><ETC_NOM>ABADIE</ETC_NOM><ETC_PRN>JEAN PIERRE</ETC_PRN><ETC_DDN>17/08/77</ETC_DDN><PAT_IPP>58999</PAT_IPP><ETC_NOM>ABADIE</ETC_NOM><ETC_PRN>NICOLE</ETC_PRN><ETC_DDN>24/11/68</ETC_DDN></result>

  4. #4
    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
    echo $doc->saveXML();
    Je connais pas le php, ca fait quoi ca? ca écrit ton arbre dans la sortie?

    Quoiqu'il en soit, c'est normal que coté js tu n'arrives pas à récupérer le responseXML car il te manque dans ton php un header pour indiquer que tu retournes du xml.

    Tu peux aussi essayer responseText à la place de responseXML. Si tu as bien ce que tu veux, c'est que la cause est probablement celle que décrite au dessus.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Par défaut header dans le fichier php
    en début de mon php (qui génère le xml) il y a :
    header('Content-type: text/xml');
    peut-être n'est-ce pas cela qu'il fallait faire ? peut-être est-il mal positionné ?
    Merci de ton aide.

  6. #6
    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
    Nan c'est bien ca.

    T'as essayé de regarder le responseText pour voir ce que tu recevais?

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Par défaut cela fonctionne !
    Merci DoubleU. Voici le bout de code final du fichier js qui fonctionne (r étant le retour du response XML).
    function suite(r)
    {
    var enreg=r.getElementsByTagName("result");
    var nombre=enreg.length;
    var listeipp="";

    for(j = 0; j < nombre; j++)
    {
    var items = r.getElementsByTagName("PAT_IPP"); /* Récupérer la liste des items */

    listeipp +="<select name='IPP_Patient'>"; /* construction de l'affichage HTML */
    for(i = 0; i < items.length; i++) /* POUR CHAQUE item */
    {
    listeipp += r.getElementsByTagName("PAT_IPP")[i].childNodes[0].nodeValue;
    listeipp += " ";
    listeipp += r.getElementsByTagName("ETC_NOM")[i].childNodes[0].nodeValue;
    listeipp += " ";
    listeipp += r.getElementsByTagName("ETC_PRN")[i].childNodes[0].nodeValue;
    listeipp += " ";
    listeipp += r.getElementsByTagName("ETC_DDN")[i].childNodes[0].nodeValue;
    listeipp += "<option value=\"items[i].getElementById('PAT_IPP').value\">";
    }
    }
    listeipp +="</select>";
    document.write(listeipp);
    }

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

Discussions similaires

  1. Récupération de data durant appel $.ajax
    Par Guillaume_Caldera dans le forum jQuery
    Réponses: 5
    Dernier message: 21/09/2011, 11h51
  2. [Prototype] Ajax.updater et récupération de valeurs depuis un formulaire
    Par Skiant dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 09/01/2009, 16h31
  3. [Servlet] recuperer fichier xml depuis AJAX
    Par robocop2776 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 13/08/2008, 14h51
  4. [AJAX] récupération de formulaire avec AJAX
    Par abda1000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/03/2007, 09h59
  5. [AJAX] Récupération tronquée de donnée binaire via XMLHttpRequest
    Par Christophe Charron dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/06/2006, 18h21

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