Ciao a tutti:
sto implementando una funzione AJAX piuttosto semplice e basilare: ho un form piuttosto grande, e un suo relativo file asp di aggiornamento dei dati nel database: l'idea è di inserire un autosave (come quello di excel o word) che, ad intervalli regolari, chiami in background il file di aggiornamento e salvi i dati nel database.
Cercando anche degli script in rete ho messo assieme una serie di funzioni che, se eseguite in firefox (3 e ora anche 4), funzionano a meraviglia; se eseguite in IE8 ottengo dei comportamenti strani: in alcuni, rarissimi casi, fa l'aggiornamento (mai più di una volta per sessione, comunque, e se lo fa è alla prima chiamata), per il resto, appena il ReadyState arriva a 4, ottengo come status un surreale 12015che, cercando in rete (e non senza fatica) ho reperito come un errore di "Login failure". Ma login a cosa???
Il codice ajax è questo:
Il tutto viene avviato onload con una chiamata a starttimer()codice:<script type="text/javascript"> function getHTTPObject() { var http = false; if(typeof ActiveXObject != 'undefined') { try {http = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) { try {http = new ActiveXObject("Microsoft.XMLHTTP");} catch (E) {http = false;} } } else if (XMLHttpRequest) { try {http = new XMLHttpRequest();} catch (e) {http = false;} } return http; } var oXHR = getHTTPObject(); function starttimer() { t = setTimeout("AutoSave()", 10000); } function RetrieveArguments() { var form = document.getElementById('Form<%=paginacorrente%>'); var tosend = "" for(var i=0;i<form.length;i++) { if(form.elements[i].type=='radio' || form.elements[i].type=='checkbox') { if(form.elements[i].checked==true) { tosend = tosend + form.elements[i].name + '=' + form.elements[i].value + '&'; } } else { tosend = tosend + form.elements[i].name + '=' + form.elements[i].value + '&'; } } tosend = tosend + 'TipoInvio=0'; return tosend; } function Miohandler() { if(oXHR.readyState == 4) { switch (oXHR.status) { case 200: document.getElementById('StatoSalvataggio').innerHTML = "Ultimo salvataggio effettuato il " + getCalendarDate() + " " + getClockTime(); break; default: document.getElementById('StatoSalvataggio').innerHTML = "Errore nel salvataggio automatio (codice=" + oXHR.status + ")"; break; } starttimer(); } else { document.getElementById('StatoSalvataggio').innerHTML = "Salvataggio in corso..." } } function AutoSave() { var parameters = RetrieveArguments(); oXHR.open("POST", "<%=Application("rootdir")%>Agg<%=paginacorrente%>.asp", true) oXHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded") oXHR.setRequestHeader("Content-length", parameters.length); oXHR.setRequestHeader("Connection", "close"); oXHR.onreadystatechange = Miohandler; oXHR.send(parameters); } </script>
Non capisco cosa non piaccia a IE...a qualcuno è mai capitata una cosa simile?


che, cercando in rete (e non senza fatica) ho reperito come un errore di "Login failure". Ma login a cosa??? 
a qualcuno è mai capitata una cosa simile?
Rispondi quotando