Problema explorer 8 con javascript innerhtml/ajax

venerdì 22 ottobre 2010 - 16.59
Tag Elenco Tags  Windows 7  |  MySQL 5.1  |  Access (.mdb)  |  Office XP  |  Internet explorer 8.0  |  Firefox  |  Javascript

mo70 Profilo | Junior Member

Ciao a tutti,
IE8 mi sta facendo impazzire!!! Ho creato una select le cui options vengono inserite dinamicamente con innerhtml attraverso una chiamata ajax. La select viene riempita correttamente sia con firefox che con ie 8 (con un piccolo trucco che ho trovato in rete), però, quando chiedo il n. delle opzioni presenti nella select con firefox ho la risposta corretta, mentre con ie il n. risulta zero. La cosa strana è che tutte le opzioni vengono correttamente visualizzate ma l'innerHTML della select in IE 8 è vuoto. Sapete indicarmi se c'è una soluzione? Vi posto il codice. Grazie mille...

function crea_ordinamento(opzioni_sel)
{

var my_url="archivio_report.php";//pagina origine dati chiamata con ajax
var sel_dest=document.getElementById("ordinamento");
var sel_testata=document.getElementById("crit_testata");
var sel_report=document.getElementById('report');
var index_report=sel_report.selectedIndex;
var message_opzioni_sel;
var descr_report = sel_report.options[sel_report.selectedIndex].text;//ricava il nome del report salvato nel db (tabella t_tip_report)
var lungh_ordinamento;

//verifica se il parametor opzioni_sel è stato passato oppure no e, di conseguenza, crea la stringa da accodare
//alla variabile message
if (opzioni_sel!='undefined')
{
message_opzioni_sel="&selezione="+opzioni_sel;
}else{
message_opzioni_sel='';
}

var message="pagina_web="+document.getElementById('report').options[index_report].value+message_opzioni_sel+"&descrizione_report="+descr_report;

//richiesta ajax
if (window.XMLHttpRequest)
{
request=new XMLHttpRequest();
}else{
request=new ActiveXObject("Microsoft.XMLHTTP");
}

if (request)
{
request.open("POST",my_url);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.onreadystatechange=
function()
{
if (request.readyState == 4)
{

//codice innerhtml cross browser
if(document.all) //IE
{
//Aggiunge una opzione fittizia
var opts = "<option>opzione</option>" + request.responseText;

//Riempie select box
sel_dest.innerHTML=opts;

//Forza refresh della select box in IE
sel_dest.outerHTML = sel_dest.outerHTML;
alert(request.responseText);

}else{ //browser normali

//Risposta Ajax senza aggiunte
sel_dest.innerHTML=request.responseText;
//alert(request.responseText);
}
lungh_ordinamento=sel_dest.length;//determina quante opzioni contiene la select ordinamento
alert(sel_dest.length);
}


}
request.send(message);
}else{
alert("Il tuo browser non è abilitato per l'utilizzo di ajax");
}


}

alx_81 Profilo | Guru

>Ciao a tutti,
ciao

>IE8 mi sta facendo impazzire!!! Ho creato una select le cui options
>vengono inserite dinamicamente con innerhtml attraverso una chiamata
>ajax. La select viene riempita correttamente sia con firefox
>che con ie 8 (con un piccolo trucco che ho trovato in rete),
>però, quando chiedo il n. delle opzioni presenti nella select
>con firefox ho la risposta corretta, mentre con ie il n. risulta
>zero. La cosa strana è che tutte le opzioni vengono correttamente
>visualizzate ma l'innerHTML della select in IE 8 è vuoto. Sapete
>indicarmi se c'è una soluzione? Vi posto il codice. Grazie mille...
Purtroppo in js diretto non so aiutarti perchè conosco poco ie8, però potresti pensare di servirti di un framework javacript, come ad esempio jquery che almeno ti garantisce la scrittura di una sola versione di codice per tutti i tipi di browser. In tal caso, la gestione dell'innerHTML è demandata al framework e tu non ti devi preoccupare di considerare il contesto browser.
Maggiori info qui: http://jquery.com/
per come si usa la innerHTML: http://api.jquery.com/html/

Aggiungendo una semplice riga di inclusione, potrai gestire anche solo la parte interessata rifattorizzando solo poche righe di codice.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5