![]()
Ho un problema per usare l'oggetto XMLHttpRequest + mootools nella stessa pagina, il problema lo riscontro solo su firefox, forse dovuto al tipo di gestore usato per l'XMLHttpRequest:
Problema:
Ho un form con alcune select a cascata che man mano vengono popolate in base alla scelta fatta dalla precedente:
queste select sfruttano PHP+XMLHttpRequest();
Nella stessa pagina ho integrato SqueezeBox.js (http://digitarald.de/project/squeeze...showcase/ajax/) per aprire una pagina
Succede che, SqueezeBox.js, causa inlcusione di mootools version: 1.2.0, crea dei problemi sul funzionamento delle select a cascata, cosa testata, infatti eliminando le inclusioni di mootools version: 1.2.0 le select riprendono ad andare.
Il JS che mi permette le select a cascata è questo:
codice:var xmlHttp = getXmlHttpObject(); function loadList(tb, id){ xmlHttp.open('GET', 'request.php?table='+tb+'&id='+id, true); xmlHttp.onreadystatechange = stateChanged; xmlHttp.send(null); } function addOption(select, value, text) { //Aggiunge un elemento <option> ad una lista <select> var option = document.createElement("option"); option.value = value, option.text = text; try { select.add(option, null); } catch(e) { //Per Internet Explorer select.add(option); } } function getSelected(select) { //Ritorna il valore dell'elemento <option> selezionato in una lista return select.options[select.selectedIndex].value; } function stateChanged() { if(xmlHttp.readyState == 4) { //Stato OK if (xmlHttp.status == 200) { var resp = xmlHttp.responseText; if(resp) { //Le coppie di valori nella striga di risposta sono separate da ; var values = resp.split(';'); //Il primo elemento è l'ID della lista. var listId = values.shift(); var select = document.getElementById(listId); //Elimina i valori precedenti while (select.options.length) { select.remove(0); } if(listId == 'regioni') { addOption (select, 0, ' Seleziona '); } if(listId == 'province') { addOption (select, 0, ' Seleziona '); } if(listId == 'comuni') { addOption (select, 0, ' Seleziona '); } var limit = values.length; for(i=0; i < limit; i++) { var pair = values[i].split('|'); //aggiunge un elemento <option> addOption(select, pair[0], pair[1]); } } } else { alert(xmlHttp.responseText); } } } function getXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; }
Mentre SqueezeBox (come da sito) è questo
Il problema si verifica solo su FIREFOX mentre su IE funziona tutto regolarmente, da quì la mia deduzione che il problema sta in questo blocco:codice:<link type="text/css" media="screen" rel="stylesheet" href="SqueezeBox.css" /> <script type="text/javascript" src="./js/SqueezeBox.js"></script> <script type="text/javascript"> window.addEvent('domready', function() { SqueezeBox.assign($$('a.boxed'), { parse: 'rel' }); }); </script>
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
visto che mi servono entrambi, come posso farli convivere?

Rispondi quotando