[AJAX] Retourne "undefined" dans une fonction de callback
Bonjour.
J'ai commencé à me renseigner un peu sur l'Ajax et j'ai un petit soucis au niveau des fonctions de callback.
Au lieu d'afficher les données que je voudrais, ça me met "undefined"
Je vous poste mon code :
testajax.js
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
|
function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
function request(callback, str) {
var xhr = getXMLHttpRequest();
alert(str);
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
//document.getElementById("text").innerHTML=xhr.responseText;
callback(xhr.reponseText);
}
};
xhr.open("GET", "testajax_traitement.php?liste=" + str , true);
xhr.send(null);
}
function readData(sel) {
//alert(sel);
document.getElementById("text").innerHTML=sel;
} |
testajax_traitement.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
|
<?php
include_once("connexion_bdd.php");
if(isset($_GET['liste'])) {
echo $_GET['liste'];
$req= 'SELECT * FROM identite WHERE nom=:nom';
//$req = 'SELECT * FROM identite';
//$reponse = query($req);
$reponse = $bdd->prepare($req) or die(print_r($bdd->errorInfo()));
$reponse->execute(array('nom'=>$_GET['liste']));
$str = '<table>';
while ($donnees = $reponse->fetch()) {
$str .='<tr>
<td>'.$donnees["id"].'</td>
<td>'.$donnees["nom"].'</td>
<td>'.$donnees["prenom"].'</td>
<td>'.$donnees["profession"].'</td>
</tr>';
}
$str.='</table>';
echo $str;
}
?> |
testajax.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
|
<html>
<head>
<script type="text/javascript" src="testajax.js"></script>
</head>
<body>
<?php
include_once("connexion_bdd.php");
$req2 = 'SELECT DISTINCT nom FROM identite ORDER BY nom';
$reponse2 = $bdd->query($req2) or die(print_r($bdd->errorInfo()));
$str = '
<br /><br />
<select name="nom" id="liste" onchange="request(readData, this.value)">';
while($donnees2 = $reponse2->fetch()) {
$str .= '<option value='.$donnees2['nom'].'>'.$donnees2['nom'].'</option>';
}
$str.= '</select>
';
$reponse2->closeCursor();
echo $str;
?>
<div id="text"></div>
</body>
</html> |
Je précise que sans passer par le callback, ça fonctionne bien. Il doit y'avoir un problème lors du passage du paramètre xhr.reponseText à la fonction readData mais je vois pas trop c'est quoi :s
Si quelqu'un pouvait m'aider, je en lui remercie d'avance ^^