par
Rei Itchido » 04 janv. 2007, 16:34
Bonjour à tous,
Je rencontre un problème avec innerHTML sous IE
J'ai 2 balises select (departement et ville) et sur le onchange() du select departement, le select ville doit se mettre à jour.
Toutes les infos sont stockées dans une BD mysql.
Je reussi à faire ce que je veux mais ça ne fonctionne que sous FF et Opera.
Sos IE tout fonctionne jusqu'à la fin de la fonction get_ville() mais le select n'est pas mis à jour
Voici mon code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title>Exemple 1</title>
<script type='text/JavaScript'>
var xhr = null;
function getXhr() {
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else {
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
}
function get_ville(){
var dep_id = document.getElementById("select_dep").value;
getXhr()
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText); // jusqu'ici tout va bien, je récupère bien ce qu'il faut
document.getElementById("select_ville").innerHTML = xhr.responseText; // et là rien, le select n'est pas mis à jour//
}
}
xhr.open("POST","ville_t.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("dep_id=" + dep_id);
}
</script>
</head>
<body onload="get_ville()">
<form id="form_ville" name="form_ville">
<select id="select_dep" name="select_dep" onchange="get_ville()">
<?php
$req_dep = mysql_query("SELECT * FROM departement ORDER BY dep_id");
WHILE($data_dep = mysql_fetch_array($req_dep)) {
printf("<option value=\"%d\">%s</option>", $data_dep['dep_id'], $data_dep['dep_nom']);
}
?>
</select>
<select id="select_ville" name="select_ville">
</select>
</form>
</body>
</html>
Merci d'avance pour votre aide.
Bonjour à tous,
Je rencontre un problème avec innerHTML sous IE
J'ai 2 balises select (departement et ville) et sur le onchange() du select departement, le select ville doit se mettre à jour.
Toutes les infos sont stockées dans une BD mysql.
Je reussi à faire ce que je veux mais ça ne fonctionne que sous FF et Opera.
Sos IE tout fonctionne jusqu'à la fin de la fonction get_ville() mais le select n'est pas mis à jour
Voici mon code
[php]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title>Exemple 1</title>
<script type='text/JavaScript'>
var xhr = null;
function getXhr() {
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else {
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
}
function get_ville(){
var dep_id = document.getElementById("select_dep").value;
getXhr()
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText); // jusqu'ici tout va bien, je récupère bien ce qu'il faut
document.getElementById("select_ville").innerHTML = xhr.responseText; // et là rien, le select n'est pas mis à jour//
}
}
xhr.open("POST","ville_t.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("dep_id=" + dep_id);
}
</script>
</head>
<body onload="get_ville()">
<form id="form_ville" name="form_ville">
<select id="select_dep" name="select_dep" onchange="get_ville()">
<?php
$req_dep = mysql_query("SELECT * FROM departement ORDER BY dep_id");
WHILE($data_dep = mysql_fetch_array($req_dep)) {
printf("<option value=\"%d\">%s</option>", $data_dep['dep_id'], $data_dep['dep_nom']);
}
?>
</select>
<select id="select_ville" name="select_ville">
</select>
</form>
</body>
</html>
[/php]
Merci d'avance pour votre aide.