AJAX-DOM: problemi con select dinamiche in IE7

D

diaboliko80

Salve a tutti.
Ho un problema con IE7.

Ho implementato una pagina .asp che tramite tecnologia AJAX mi crea una
serie di select nidificate (il classico esempio delle Regioni-Province
--> scelgo dalla prima select una regione d'Italia e popolo
dinamicamente la seconda select con le province corrispondenti).

Tutto questo funziona perfettamente con FireFox.
Mi sono accorto poi che su Internet Explorer 7 invece non funziona per
niente (?).

Io ho implementato una pagina .asp che richiama un file .js (dove
tramite AJAX popolo le mie select) utilizzando come webserver IIS.
Utilizzo Windows XP come S.O.

Su internet non ho trovato nulla che potesse aiutarmi a capire questo
strano problema.

Dalla mia umile esperienza direi che si tratta di qualche errore di
sintassi a livello di javascript che IE7 non riesce a risolvere.
Il fatto è che la mia pagina .js (utilizzo anche il DOM) l'ho
strutturata basandomi sullo standard del W3C
(http://www.w3schools.com/) ma potrei ovviamente aver dimenticato
qualcosa.

Suggerimenti?

La struttura della mia applicazione è questa:
1) pagina default.asp che contiene le select dinamiche con valori
prelevati da un database;
2) nell'evento ONCHANGE di ogni select richiamo una funzione javascript
che implementa la tecnologia AJAX: --> creo l'oggetto xmlHttpRequest
....
xmlHttp = getXmlHttpObject())
xmlHttp.onreadystatechange = stateChanged; //funzione da richiamare
quando cambia lo stato dell'oggetto
var url = "cerca.asp"; //mi restituirà le OPTION della select figlio
xmlHttp.open("GET", url + "?idpadre=" + ID, true);
xmlHttp.send(null);
....
// funzione che ricava l'oggetto in base al browser dell'utente
function getXmlHttpObject()
{
var objXmlHttp = null;
if(window.XMLHttpRequest)
{
objXmlHttp = new XMLHttpRequest(); // code for Mozilla, etc.
}
else if(window.ActiveXObject)
{
objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE7
?!?!?
}
return objXmlHttp;
}
....
// funzione da eseguire quando cambia lo stato dell'oggetto
function stateChanged()
{
....
//visualizzo il risultato del file aperto con l'oggetto xmlHttp
document.getElementById(SelectName).innerHTML = xmlHttp.responseText;
....
}

3) il file cerca.asp esegue una query sul database estrapolando tutti i
record figli della select selezionata --> in pratica con una serie di
Response.Write stampo le varie OPTION;

Forse non è un problema di oggetti in quanto facendo la ResponseText
del mio httpRequest i dati delle select li visualizzo... quindi deduco
che l'oggetto venga creato correttamente sia su FireFox che su IE7....
Nella mia funzione:

// funzione che ricava l'oggetto in base al browser dell'utente
function getXmlHttpObject()
{
var objXmlHttp = null;
// code for Mozilla, etc.
if(window.XMLHttpRequest)
{
alert('MOZILLA');
objXmlHttp = new XMLHttpRequest()
}
// code for IE
else if(window.ActiveXObject)
{
alert('IE');
objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
}
return objXmlHttp;
}

stampo sempre MOZILLA sia su fireFox che su IE7. Questo perchè (credo)
entrambi i browser utilizzano l'oggetto XMLHttpRequest più standard e
indipendente.

Detto ciò, il problema continua a restare però.... :-(

Grazie e buona giornata a tutti.

Luigi.
 
A

ASM

(e-mail address removed) a écrit :
[snip]
La struttura della mia applicazione è questa:
1) pagina default.asp che contiene le select dinamiche con valori
prelevati da un database;
2) nell'evento ONCHANGE di ogni select richiamo una funzione javascript
che implementa la tecnologia AJAX: --> creo l'oggetto xmlHttpRequest
...
xmlHttp = getXmlHttpObject())
xmlHttp.onreadystatechange = stateChanged; //funzione da richiamare
quando cambia lo stato dell'oggetto
var url = "cerca.asp"; //mi restituirà le OPTION della select figlio
xmlHttp.open("GET", url + "?idpadre=" + ID, true);

Après l'italien, un peu d'espagnol ?

de donde viene este ID ?
xmlHttp.send(null);
...
// funzione che ricava l'oggetto in base al browser dell'utente

Mirar luego (see bellow)
...
// funzione da eseguire quando cambia lo stato dell'oggetto
function stateChanged()
{
...
//visualizzo il risultato del file aperto con l'oggetto xmlHttp
document.getElementById(SelectName).innerHTML = xmlHttp.responseText;

como no se que es este SelectName ...
Is it a select tag ?
If yes, on my idea you cannot innerHTML all your options this way,
but I can make a mistake ...
...
}

3) il file cerca.asp esegue una query sul database estrapolando tutti i
record figli della select selezionata --> in pratica con una serie di
Response.Write stampo le varie OPTION;

Forse non è un problema di oggetti in quanto facendo la ResponseText
del mio httpRequest i dati delle select li visualizzo... quindi deduco
che l'oggetto venga creato correttamente sia su FireFox che su IE7....
Nella mia funzione:

// funzione che ricava l'oggetto in base al browser dell'utente

function getXmlHttpObject() {
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!http_request) {
alert('Abandon : Impossible de créer une instance XMLHTTP');
return false;
}
else alert('tutti va bene');
return http_request;
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top