Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema de AJAX con los navegadores

Estas en el tema de Problema de AJAX con los navegadores en el foro de Frameworks JS en Foros del Web. Hola, tengo el siguiente problema, estoy usando la siguiente función AJAX: function nuevoAjax() { var req = false; try { req = new XMLHttpRequest(); /* ...
  #1 (permalink)  
Antiguo 29/11/2010, 15:52
 
Fecha de Ingreso: noviembre-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Problema de AJAX con los navegadores

Hola, tengo el siguiente problema, estoy usando la siguiente función AJAX:

function nuevoAjax()
{
var req = false;
try
{
req = new XMLHttpRequest(); /* p.e. Firefox */
}
catch(err1)
{
try
{
req = new ActiveXObject("Msxml2.XMLHTTP");
/* algunas versiones IE */
}
catch(err2)
{
try
{
req = new ActiveXObject("Microsoft.XMLHTTP");
/* algunas versiones IE */
}
catch(err3)
{
req = false;
}
}// catch2
}//catch1
return req;
}


para crear 2 listas desplegables dependientes, o sea que en dependencia del valor que se tome en la primera lista se cargan una serie de valores en la segunda. Esto lo hago con la siguiente función:

var listadoSelectsRegGeneral=new Array();
listadoSelectsRegGeneral[0]="provincia";
listadoSelectsRegGeneral[1]="ger_vicepres";

function buscarEnArrayGeneral(array, dato)
{
// Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
var x=0;
while(array[x])
{
if(array[x]==dato) return x;
x++;
}
return null;
}

function cargaGervicepres(idSelectOrigen)
{
// Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
var posicionSelectDestino=buscarEnArrayGeneral(listado SelectsRegGeneral, idSelectOrigen)+1;
// Obtengo el select que el usuario modifico
var selectOrigen=document.getElementById(idSelectOrige n);
// Obtengo la opcion que el usuario selecciono
var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."

if(opcionSeleccionada==0)
{
var x=posicionSelectDestino, selectActual=null;
// Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
while(listadoSelectsRegGeneral[x])
{
selectActual=document.getElementById(listadoSelect sRegGeneral[x]);
selectActual.length=0;

var nuevaOpcion=document.createElement("option");
nuevaOpcion.value=0;
nuevaOpcion.innerHTML="seleccionar";
selectActual.appendChild(nuevaOpcion);
selectActual.disabled=true;
x++;
}
}
// Compruebo que el select modificado no sea el ultimo de la cadena
else if(idSelectOrigen!=listadoSelectsRegGeneral[listadoSelectsRegGeneral.length-1])
{
// Obtengo el elemento del select que debo cargar
var idSelectDestino=listadoSelectsRegGeneral[posicionSelectDestino];
var selectDestino=document.getElementById(idSelectDest ino);
// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
var ajax=nuevoAjax();
var miAleatorio=parseInt(Math.random()*999999);
ajax.open("GET", "sites/all/modules/sistema_etecsa/clases/cargarGer_vicepres.php?select="+idSelectDestino+"& opcion="+opcionSeleccionada+"&rand="+miAleatorio, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
selectDestino.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;
}
if (ajax.readyState==4)
{
selectDestino.parentNode.innerHTML=ajax.responseTe xt;
}
}
ajax.send(null);
}
}


el problema surge porque no me funciona en FireFox o en versiones recientes de IE, como la 8, pero si en la versión 6. ¿Cuál puede ser el problema, tendré que actualizar la función AJAX?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:28.