Hola!
En la aplicacion que estoy realizando uso ajax para llenar unos <select> con datos.
Esos datos los jalo de una base de datos de sql server.
La parte de obtener los datos lo realizo con un script de asp.
La peticion y la devolucion de esos datos hasta la parte de la respuesta del script asp es correcta.
Ya que obtengo el resultado del script asp, ese resultado lo guardo en una cadena de javascript global.
Ya que tengo esa respuesta en la variable la proceso para agregar <options> al <select> que deseo.
Todo esto se ejecuta mediante un onchange de un <select>, a fin de llenar sus <select> dependientes.
Mi problema pasa en el codigo de la respuesta del XMLHTTPRequest., al principio inicializo la variable global de respuesta como una cadena vacia.
Entonces realizo el primer onchange, pero de respuesta, la variable trae la cadena vacia.
Vuelvo a cambiar el select, y la respuesta que me devuelve es la que supuestamente me debía devolver la primera vez; y así sucesivamente.
No se porque sucede pero como que la respuesta del servidor esta atrasada y me la da cuando hago otra petición.
Escribo mi código a continuación.
Esta es la funcion que se ejecuta en el onchange:
var respuesta="";
function switch_Select(sorigen,sdestino,param,tabla)
{
var i;
i=0;
var lorigen = sorigen.options[sorigen.selectedIndex].value;
var ldestino = document.getElementById("s"+sdestino);
if(sdestino=="request")
sdestino="fullname";
if(sdestino=="respons")
sdestino="name";
origenajax(lorigen,sdestino,param,tabla);
ldestino.options.length=0;
ldestino.options[0]=new Option("--Seleccione--",0);
var arreglo=respuesta.split(":");
var arrlength= arreglo.length;
for(i=1;i<arrlength;i++)
ldestino.options[i]=new Option(arreglo[i],arreglo[i]);
}
Aqui esta como manejo el XMLHTTPRequest
function origenajax(id,col,param,tabla)
{
XMLHttp=null;
try
{
XMLHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
XMLHttp=new XMLHttpRequest();
}
}
var url="sel.asp";
url+="?id="+String(id)+"&t="+col+"&p="+param+"&ta="+tabla+"&sid="+Math.random();
XMLHttp.onreadystatechange=stateChanged;
XMLHttp.open("GET",url,true);
XMLHttp.send(null);
}
function stateChanged()
{
if(XMLHttp.readyState==4||XMLHttp.readyState=="complete")
respuesta=XMLHttp.responseText;
}
Agradezco de antemano los comentarios