[Ajax] Petit problème avec PHP et AJAX
Bonjour, voila je debute en ajax, j'ai deja lut quelque truc notamment sur ce site qui est super.
Mais la j'ai un petit probleme.
Donc voici ma page php principale:
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| <html>
<head>
<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
<script type='text/javascript'>
var xhr = null;
function getXhr(){
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
}
function gox(){
getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('livre').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ajax.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id de l'auteur
sel = document.getElementById('auteur');
idauteur = sel.options[sel.selectedIndex].value;
xhr.send("idAuteur="+idauteur);
}
function go(c){
if(!c.data.replace(/\s/g,''))
c.parentNode.removeChild(c);
}
function clean(d){
var bal=d.getElementsByTagName('*');
for(i=0;i<bal.length;i++){
a=bal[i].previousSibling;
if(a && a.nodeType==3)
go(a);
b=bal[i].nextSibling;
if(b && b.nodeType==3)
go(b);
}
return d;
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
function gophp(){
getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
var xmldoc = xhr.responseXML;
var root_node = xmldoc.getElementsByTagName('reponse').item(1);
alert(root_node.firstChild.data);
reponse = clean(xhr.responseXML.documentElement);
document.getElementById('livre').innerHTML = reponse.getElementsByTagName("reponse").item(0);;
//alert(reponse.getElementsByTagName("message")[0].firstChild.nodeValue);
}
}
xhr.open("POST","ajaxml.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id de l'auteur
sel = document.getElementById('auteur');
idauteur = sel.options[sel.selectedIndex].value;
xhr.send("idAuteur="+idauteur);
}
</script>
</head>
<body>
<form>
<fieldset style="width: 500px">
<legend>Liste liées</legend>
<label>Auteurs</label>
<select name='auteur' id='auteur' onchange='gophp()'>
<option value='-1'>Aucun</option>
<?
mysql_connect("localhost","root","");
mysql_select_db("bbjess");
$res = mysql_query("SELECT * FROM auteur ORDER BY nom");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["id"]."'>".$row["nom"]."</option>";
}
?>
</select>
<label>Livres</label>
<div id='livre' style='display:inline'>
<select name='livre'>
<option value='-1'>Choisir un auteur</option>
</select>
</div>
</fieldset>
</form>
</body>
</html> |
Et ensuite ma page de traitement:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?php
if(isset($_POST["idAuteur"]))
{
$connect = mysql_connect("localhost", "root", "");
mysql_select_db("bbjess");
$result = mysql_query("SELECT id,titre FROM livre WHERE idAuteur=". $_POST["idAuteur"] ." ORDER BY titre");
$num = mysql_num_rows($result);
$file= fopen("results.xml", "w");
$_xml ="<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\r\n";
$_xml .='<reponse>\r\n';
$_xml .="<select name='livre'>\r\n";
while($row = mysql_fetch_assoc($result))
{
$_xml .="<option value='".$row["id"]."'>".$row["titre"]."</option>\r\n";
}
mysql_close($connect);
$_xml .="</select>\r\n</reponse>";
fwrite($file, $_xml);
fclose($file);
header('Content-Type: text/xml');
echo $_xml;
}
?> |
Et mon probleme c'est que je n'arrive pas a recuperer la liste en xml.
Comment faire?
Merci beaucoup.