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

  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 responsetext
    Oui DoubleU en responseText je re�ois quelque chose. Cela doit sans doute signifier que la g�n�ration de mon flux XML n'est pas bonne (c'est � dire pas au format XML)...mais je ne sais pas comment proc�der alors (cf. la boucle While de mon code php)...

  8. #8
    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
    En fait, si tu re�ois bien le responseText avec ce que tu cherches dedans mais que le responseXML est vide, c'est peut etre � cause du header qui est mal mis. Si tu utilises firebug, a chaque fois qu'une requ�te/r�ponse passe tu peux en voir le contenu et les headers. Regarde bien si dans la r�ponse, le header xml est bien mis.

    Sinon, autre possibilit�, ca m'est d�ja arriv� que la r�ponse � une requ�te soit tellement grosse qu'il n'arrivait pas � g�n�rer le xml. J'avais �crit une fonction � qui je passais le responseText et qui me ressortait le xml correspondant. Ca devrait marcher aussi mais je pense qu'il vaudrait mieux arriver � utiliser le responseXML de base.

    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
    function xmlStringToXmlNode(xmlTxt){
     
    	var parser = null;
    	var xml = null;
     
    	try{
    		parser = new ActiveXObject('Microsoft.XMLDOM');
    		parser.async = false;
    		parser.loadXML(xmlTxt);
    		xml = parser.documentElement;
    	}
    	catch(e){
    		parser = new DOMParser();
    		xml = parser.parseFromString(xmlTxt,"text/xml").documentElement;
    	}
     
    	return xml;
     
    }

  9. #9
    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