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