Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Ajax problema ciclo for su stessa funzione

    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:

    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!");
        }
    }
    E una chiamata di esempio potrebbe essere questa:

    codice:
    loadRighe('3','s')
    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.
    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

  2. #2
    Se "con l'alert magicamente tutto funziona come se fosse un problema di tempo di esecuzione", prova a fare chiamate Ajax sincrone invece delle chiamate asincrone standard.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.