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] Transfert de document xml généré par php


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Points : 119
    Points
    119
    Par défaut [AJAX] Transfert de document xml généré par php
    Bonjour,

    Je débutes avec Ajax et je me retrouve avec un problème. Il semble que responseXML ne me renvoie rien. Voici mon code :
    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
    function Ajax(value) {
    	var xhr=null;
    	var index=0;
        if (value.ListeClasse.selectedIndex != 0) {
    	  index=value.ListeClasse.options[value.ListeClasse.selectedIndex].value;
    	}
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    	xhr.onreadystatechange = function() { alert_ajax(xhr); };
     
        //on appelle le fichier reponse.txt
        xhr.open("GET", "http://localhost/comptefse/reponse.php?idg="+index, true);
    	/*xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");*/
        xhr.send(null);
     
    }
    function alert_ajax(xhr)
    {
    	if (xhr.readyState==4) {
    		var docXML= xhr.responseXML;		
    		var items = docXML.getElementsByTagName("eleve");
    		var mydiv = document.getElementById("eleves");
    		alert(items.length);
    		//on fait juste une boucle sur chaque élément "donnee" trouvé
    		for (i=0;i<items.length;i++)
    		{
    			alert("test");
    			var oPar=mydiv.createElement("p");
    			var t=document.createTextNode(items.item(i).firstchild.firstchild.data); 
    			oPar.appendChild(t);
    			//alert (items.item(i).firstChild.data);
    		}
    		alert('fini');
    	}
    }
    et mon fichier 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
    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
    53
    54
    55
    56
    57
    <?php 
    header('Content-Type: text/xml; charset=iso-8859-1'); 
    $text = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"; 
    require_once('Connections/MyConnect.php');
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $Idg_SelectEleves = "1";
    if (isset($_GET['idg'])) {
      $Idg_SelectEleves = $_GET['idg'];
    }
    mysql_select_db($database_MyConnect, $MyConnect);
    $query_SelectEleves = sprintf("SELECT P.* FROM personne P INNER JOIN apartenance A ON A.Personne=P.IdPersonne INNER JOIN Groupe G ON A.Groupe=G.IdGroupe WHERE A.Groupe=%s", GetSQLValueString($Idg_SelectEleves, "int"));
    $SelectEleves = mysql_query($query_SelectEleves, $MyConnect) or die(mysql_error());
    $row_SelectEleves = mysql_fetch_assoc($SelectEleves);
    $totalRows_SelectEleves = mysql_num_rows($SelectEleves);
          $text=$text."<document>\n";
     do { 
          $text=$text."<eleve id='".$row_SelectEleves['IdPersonne']."'>\n";
    	  $text=$text."<nom>".$row_SelectEleves['Nom']."</nom>\n";
    	  $text=$text."<prenom>".$row_SelectEleves['Prenom']."</prenom>\n";
    	  $text=$text."</eleve>\n";
     
     } while ($row_SelectEleves = mysql_fetch_assoc($SelectEleves));  
          $text=$text."</document>\n";
    	  $handle=fopen('test.xml','a');
    	  fwrite($handle,$text);
    	  fclose($handle);
    	  echo $text;
    mysql_free_result($SelectEleves);
    ?>
    Lorsque je vérifie mon fichier, j'obtiens bien un fichier xml non vide avec des informations. Mais lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var docXML= xhr.responseXML;		
    		var items = docXML.getElementsByTagName("eleve");
    		var mydiv = document.getElementById("eleves");
    		alert(items.length);
    Je n'obtiens qu'une taille de 0 !
    D'où peut venir mon erreur.

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Points : 119
    Points
    119
    Par défaut
    J'ai trouvé l'erreur. Elle venait de php et de la librairie libmysql qui m'ajoutais systématiquement cette ligne :

    "Error in my_thread_global_end(): 1 threads didn't exit"

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

Discussions similaires

  1. Problème de chargement xml généré par php
    Par Smiff dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 21/10/2008, 13h07
  2. Flux XML généré par le script PHP incomplet
    Par L.nico dans le forum Langage
    Réponses: 1
    Dernier message: 29/06/2008, 15h27
  3. [XSLT] Erreur XML généré par php "semble pas avoir d'information de style"
    Par Overstone dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 01/08/2007, 18h59
  4. [JDOM] Fichier xml généré par jdom
    Par vero59 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 05/08/2005, 16h30
  5. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 09h53

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