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

    Passaggio di variabile in script ajax

    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...

  2. #2
    Ho risolto e vi spiego come per utenti futuri se ci saranno. Sbagliavo la chiamata.

    Ho sostituito questo:
    codice:
    XMLHTTP = RicavaBrowser(CambioStato(prod));
    con questo:

    codice:
    XMLHTTP = RicavaBrowser(function() {CambioStato(prod)});

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.