Salve ho un problema con una select dinamica che mi si verifica soltanto su internet explorer, su firefox funziona tutto bene tranne una cosina che vi chiederò dopo.
questo è il codice:
Codice PHP:
// Questa funzione serve a prendere un oggetto di tipo HTTPObject per passare i valori al server
function getHTTPObject(){
if (window.ActiveXObject)
return new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest)
return new XMLHttpRequest();
else {
alert("Your browser does not support AJAX.");
return null;
}
}
function populateSelect(){
alert('sono qui');
marcauto = document.getElementById('menumarca').value;
httpObject = getHTTPObject();
var r = Math.random();
if (httpObject != null) {
httpObject.open("GET", "selectphp.php?MARCA=" + marcauto + "&RAND=" +escape(r), true);
httpObject.send(null);
alert ("ho finito la chiamata Ajax");
populate();
}
}
function populate(){
var myArr = [];
if(httpObject.readyState == 4){
var lista = httpObject.responseText;
}
lista = lista.replace(/\'/g,"");
alert('lista '+lista);
myArr = lista.split( /,/);
alert('myArr '+myArr);
var i;
var content = "";
for(i = 0; i < myArr.length; i++){
content += '<option value="'+myArr[i]+'">'+myArr[i]+"</option>n";
}
document.getElementById("veicolouniv").innerHTML = content;
}
ha messo dei vari alert sulla funzione populate() e noto che l'array anche su explorer viene costruito bene, il problema è quando deve andare a ficcare content nelle opzioni del menù a selezione, mentre su FF funge tutto, in IE non scrive le opzioni.
AVETE QUALCHE IDEA?
dovrebbe essere in document.getElementById("veicolouniv").innerHTML = content; il problema.
Inoltre un'altra cosa, tornando sulla chiamata ad Ajax che sta nella prima funzione ossia in populateSelect(), ho uno strano comportamento. Con quell' alert ("ho finito la chiamata Ajax"); mi funge, se tolgo l'alert... non fa + niente. Come posso risolvere?
allego il codice della pagina php chiamata:
Codice PHP:
<?php include('Connections/mysql.php'); ?>
<?php
mysql_select_db($database_mysql, $mysql);
if (isset($_GET['MARCA'])) {
$marca = $_GET['MARCA'];
$query_Recordset1 = "SELECT vettureuniversali.modello FROM vettureuniversali WHERE marca = '".$marca."'";
$Recordset1 = mysql_query($query_Recordset1, $mysql) or die(mysql_error());
$ret = '';
while($row_Recordset1 = mysql_fetch_assoc($Recordset1))
{
$ret .="'".$row_Recordset1['modello']."',";
}
if(strlen($ret) > 0){
$ret = substr($ret, 0, strlen($ret) - 1);
}
echo "$ret";
mysql_free_result($Recordset1);
}
?>