[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:
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:
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:
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