Le XMLHttpRequest me plante

Fermé
papagan - 25 févr. 2009 à 13:11
 papagan - 25 févr. 2009 à 13:27
Bonjour,

je veux renseigner une liste déroulante en donnant en parametre à la requete qui l'alimente une valeure issue d'une autre liste déroulante.

NB les valeurs proviennet d'une base de données.
J'ai lu les forum et je suis tombé sur des choz qui m'ont donné un grand coup de pouce.
Mais je suis planté lorsque je fais le choix ds la premiere liste la 2e liste n'est pas renseignée mais la requete qui doit alimenter la liste(2e) march bien /. je vais mettre la le bout de code et je serai content si vous pouvez m'aider à trouver la faille la dedans. Merci d'avance.

//page ou se trouve les listes.

NB oXHR.js est le fichier d'instanciation du XHR



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Techniques AJAX - Listes liées</title>
<script type="text/javascript" src="oXHR.js"></script>
<script type="text/javascript">
<!--
function selectEditor(oElem) {

var xhr = getXMLHttpRequest();
var value = oElem.options[oElem.selectedIndex].value;
//alert(value) ;
if(value != "none") {
// alert(xhr.state);
if(xhr && xhr.readyState != 0) {

xhr.abort();

}
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
alert(xhr.responseXML);
makeList(xhr.responseXML);
// alert('AZEEEEE') ;
document.getElementById("loading").innerHTML = "";
} else if(xhr.readyState == 2 || xhr.readyState == 3) {
document.getElementById("loading").innerHTML = "<p>Chargement en cours</p>";
}
}
//alert('AZEEEEE') ;
xhr.open("POST", "RepPhpAjax.php", true);
// alert('AZEEEEE 2') ;
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("IdEditor=" + value);
}

}

function makeList(oData) {
var oOptions = oData.getElementsByTagName("option");
var oSelect = document.getElementById("softwaresSelect");

oSelect.innerHTML = "";
//alert(oOptions.length) ;

for(var i=0,c=oOptions.length;i<c;i++) {
var oOption = document.createElement("option");

oOption.value = oOptions[i].getAttribute("value");
oSelect.appendChild(oOption);
oOption.innerHTML = oOptions[i].firstChild.nodeValue;
}
}
//-->
</script>
</head>

<body>
<? include('connex_ajaxtest.php'); ?>
<fieldset>
<legend>Programmes</legend>
<div id="programBox">
<div id="loading"></div>
<div id="editors">
<select id="editorsSelect" onchange="selectEditor(this);">
<option value="none">Selection</option>
<?php

$query = mysql_query("SELECT * FROM ajax_example_editors oRDER BY name");
while($back = mysql_fetch_assoc($query)) {
echo "\t\t\t\t<option value=\"".$back["id"]."\">".$back["name"]."</option>\n";
}
?>
</select>
</div>
<div id="softwares">
<select id="softwaresSelect"></select>
</div>
</div>
</fieldset>
</body>
</html>



//fin page ou se trouve les listes.


//page traitant la requete
<?php

header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>";
echo "<select>";
include('connex_ajaxtest.php');
if(isset($_POST['IdEditor']) && $_POST['IdEditor'] != "") {
$idEditor = htmlentities($_POST['IdEditor']);

$query = mysql_query("SELECT * FROM ajax_example_softwares WHERE idEditor=".$idEditor." oRDER BY name");
while($back = mysql_fetch_assoc($query)) {
echo "<option value=\"".$back["id"]."\">".$back["name"]."</option>\n";
}
}

echo "</select>";

?>

// fin page traitant la requete

1 réponse

rebonjour,*

toujours, à la recherche de solution, je me suis apercu que ma fonction makeList(xhr.responseXML) ; ne prend âs en compte xhr.responseXML; je pense que si j'arriv à trouver cette explication, je peux trouver ce qui plante.
0