Ciao a tutti sto creando una pagina che per funzionare necessit� di un ajax che al suo interno ha un ciclo che richiama sempre la stessa funzione.
Il codice � questo:
E una chiamata di esempio potrebbe essere questa:codice:function loadRighe(riga,sessione) { for (i=1; i<riga; i++) { /*alert('pippo');*/ RichiestaOpen2(i,sessione); $("#add_serv_"+i).hide(); } } var XMLHTTP; function RichiestaOpen2(riga_attuale, Sessione) { var url = "/include/select-new-serv.asp?id=" + riga_attuale + "&s=" + Sessione; XMLHTTP = RicavaBrowser(function() {CambioStatoOpen(riga_attuale)}); XMLHTTP.open("GET", url, true); XMLHTTP.send(null); } function CambioStatoOpen(Iniziale) { if (XMLHTTP.readyState == 4) { var Q = document.getElementById("new_serv_"+Iniziale); Q.innerHTML = XMLHTTP.responseText; } } function RicavaBrowser(QualeBrowser) { if (navigator.userAgent.indexOf("MSIE") != (-1)) { var Classe = "Msxml2.XMLHTTP"; if (navigator.appVersion.indexOf("MSIE 5.5") != (-1)); { Classe = "Microsoft.XMLHTTP"; } try { OggettoXMLHTTP = new ActiveXObject(Classe); OggettoXMLHTTP.onreadystatechange = QualeBrowser; return OggettoXMLHTTP; } catch(e) { alert("Errore: l'ActiveX non verr� eseguito!"); } } else if (navigator.userAgent.indexOf("Mozilla") != (-1)) { OggettoXMLHTTP = new XMLHttpRequest(); OggettoXMLHTTP.onload = QualeBrowser; OggettoXMLHTTP.onerror = QualeBrowser; return OggettoXMLHTTP; } else { alert("L'esempio non funziona con altri browser!"); } }
con questo codice sopra viene chiamata la funzione "loadRighe" la quale ha al suo interno il ciclo for che, secondo la chiamata sopra, � eseguito 2 volte e quindi dovrebbe essere chiamata la funzione "RichiestaOpen2" per 2 volte.codice:loadRighe('3','s')
La funzione "RichiestaOpen2" ne chiama a sua volta altre che alla fine hanno il compito di inserire codice html dentro a due id html ovvero gli id "new_serv_1" e "new_serv_2".
Sintatticamente � tutto scritto correttamente e ho guardato facendo debug le variabili sono tutte passate correttamente.
Il problema � che a volte funziona e a volte no, a volte vedo nel caso specifico il codice dentro ai 2 id (rarissimamente) e a volte ne vedo solo uno (quasi sempre).
Non capendo il perch� ho messo un alert alla chiamata (che sopra � commentato) e con l'alert magicamente tutto funziona come se fosse un problema di tempo di esecuzione o roba del genere, come se le eseguisse troppo velocemente e forse XMLHTTP non riuscisse a gestire le chiamate velocemente..... boh...
sapete aiutarmi a risolvere il problema?
grazie a tutti

Rispondi quotando