Ciao a tutti sto usando uno script ajax su una pagina asp e mi si verifica un problema.
Cerco di spiegarvi... la funzione che viene chiamata dalla pagina asp si chiama getComboA questa funzione che ha due parametri in input poi ne chiama un'altra e questa un'altra ancora e così via.
Il mio problema è che uno di questi parametri che vengono passati dalla pagina asp me lo devo portare dietro fino all'ultima funzione e nell'ultimo passaggio di valore credo ci sia un errore.
Questo è lo script, come vedete ho messo degli alert (commentati) e sono tutti corretti infatti il valore in quegli alert c'è... il problema credo sia dentro la funzione CambioStato, dove l'alert mi fa vedere che il parametro è passato corretto, ma poi la risposta XMLHTTP.readyState non è 4 e quindi non entro dentro quel IF.
La risposta di XMLHTTP.readyState è data dalla funziona RicavaBrowser e credo che sia li che io devo fare delle modifiche ma non riesco a capire dove.

codice:
function getComboA(idsel, prod) {
    var valore = document.getElementById(idsel).value;
    //alert("cambio colore " + valore + " " + prod);
    Richiesta(valore, prod);
}

var XMLHTTP;
function Richiesta(valore, prod)
{
        var url = "/include/change-color.asp?color=" + valore + "&product=" + prod;
        //alert("cambio colore2 " + valore + " " + prod);
        XMLHTTP = RicavaBrowser(CambioStato(prod));
        XMLHTTP.open("GET", url, true);
        XMLHTTP.send(null);
}

function CambioStato(prod)
{
    //alert("cambio colore3 " + prod);
    if (XMLHTTP.readyState == 4)
    {
        var R = document.getElementById(prod);
        R.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!");
    }
}
Ho fatto un test richiamando le due funzioni senza passaggio di parametro come vedete nello script sotto e facendo così la risposta del XMLHTTP.readyState è 4 e quindi corretta, ma a me serve quel parametro... cosa devo modificare?

codice:
function getComboA(idsel, prod) {
    var valore = document.getElementById(idsel).value;
    //alert("cambio colore " + valore + " " + prod);
    Richiesta(valore, prod);
}

var XMLHTTP;
function Richiesta(valore, prod)
{
        var url = "/include/change-color.asp?color=" + valore + "&product=" + prod;
        //alert("cambio colore2 " + valore + " " + prod);
        XMLHTTP = RicavaBrowser(CambioStato);
        XMLHTTP.open("GET", url, true);
        XMLHTTP.send(null);
}

function CambioStato()
{
    if (XMLHTTP.readyState == 4)
    {
        var R = document.getElementById("prod-1");
        R.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!");
    }
}
Grazie a tutti per l'aiuto e spero di essere stato chiaro...