Foros del Web » Programando para Internet » ASP Clásico »

Extraño problema con el Ajax y el IE

Estas en el tema de Extraño problema con el Ajax y el IE en el foro de ASP Clásico en Foros del Web. Otra vez otro problema con el IE, lo siento pero si a alguien se le ha presentado algo parecido le agradezco cualquier sugerencia. Estoy haciendo ...
  #1 (permalink)  
Antiguo 30/04/2010, 15:26
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Extraño problema con el Ajax y el IE

Otra vez otro problema con el IE, lo siento pero si a alguien se le ha presentado algo parecido le agradezco cualquier sugerencia.

Estoy haciendo una lista desplegable enlazada, lo probe con el Firefox, Opera y Zafari y en todos funciona correctamente, pero no con el "espectacular IE"

Aqui van los codigos:

Esta es la tipica funcion para crear el objeto ajax que uso
function nuevoAjax()
{
var xmlhttp=false;
try
{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }

return xmlhttp;
}

Para los que no saben, agregarle el tiempo para el cache de IE, se lo quite y tampoco funciona.
function pedirDatos(pagina, destino){

var contenedor;
var ajax;

contenedor = document.getElementById(destino);

var date = new Date();
if (pagina.indexOf('=')>0){
pagina=pagina+'&Quake='+date.getTime();
}
else{
pagina=pagina+'?Quake='+date.getTime();
}

ajax = nuevoAjax();
ajax.open("GET", pagina, true);
ajax.onreadystatechange=function() {

/*alert(contenedor.innerHTML+' -||- '+ajax.responseText);*/ AQUI

if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText;
}
else{
contenedor.innerHTML = '<option value="0">Cargando...</option>';
}
}
ajax.send(null);
}

<Select Name="Cat" Id="Cat" onChange="pedirDatos('Procesos.asp?IdCat='+this.va lue, 'IdTipo');">
<option value="0">Seleccionar...</option>
<option value="1">Zapatos</option>
<option value="2">Medias</option>
<option value="3">Pantalones</option>
<option value="4">Camisas</option>
</Select>

este es el select dependiente
<Select Name="IdTipo" Id="IdTipo">
<option value="0">Seleccionar...</option>
</Select>

En la funcion "pedirDatos" coloque un Alert para averiguar en que parte comete el error y aparentemente no hay error, el alert me muestra los valores correctos que envia el servidor pero no los coloca en 'IdTipo'.

Que se les ocurre?

Gracias.
  #2 (permalink)  
Antiguo 30/04/2010, 16:15
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Extraño problema con el Ajax y el IE

Hola

Lo primero sería decirte ¿qué tiene que ver todo eso con ASP? Después, lo extraño es que funcione en algún navegador, puesto que estás intentando insertar nuevas opciones en el select y no veo por ningún lado el javascript para ello

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 30/04/2010, 16:45
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Extraño problema con el Ajax y el IE

Gracias Adler.

La funcion pedirDatos llama a Procesos.asp y este busca en la bd segun el valor enviado y lo carga, y si, funciona perfectamente con los otros navegadores.
  #4 (permalink)  
Antiguo 30/04/2010, 17:03
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Extraño problema con el Ajax y el IE

Hola

Cita:
Iniciado por jochesfor Ver Mensaje
Gracias Adler.

La funcion pedirDatos llama a Procesos.asp y este busca en la bd segun el valor enviado y lo carga, y si, funciona perfectamente con los otros navegadores.
Si tu lo dices, será así

Prueba con esta función

Código Javascript:
Ver original
  1. var ns4 = (document.layers)? true:false
  2. var ie4 = (document.all)? true:false
  3. var ns6 = (document.getElementById)? true:false
  4.  
  5. function navegador(idnombre) {
  6.     if (ns6)
  7.     {
  8.     return document.getElementById(idnombre);
  9.     }
  10.     else if (ie4)
  11.     {
  12.     return document.all[idnombre];
  13.     }
  14.     else if (ns4)
  15.     {
  16.     return document.layers[idnombre];
  17.     }
  18.     else
  19.     {
  20.     return null;
  21.     }
  22. }

Ahora aquí, esto

Código Javascript:
Ver original
  1. contenedor = navegador(destino);

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 02/05/2010, 17:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Extraño problema con el Ajax y el IE

Gracias Adler, disculpa mi ignorancia pero para que sirve ese codigo?

Si quieres probar lo que digo mira este enlace es una prueba que hice para exponer mi problema, lo probe con el IE7 y no me funciona.

http://www.traddies.com/listas.asp

Miren el codigo fuente.

Les agradezco que lo miren y me den cualquier sugerencia

Este es el codigo de ListaProc.asp

<%
BdPrueba = "Prueba.mdb"

'Ejemplo para las listas desplegables'
if request.querystring("IdCat") <> "" then
str = "select Id_Tipo, Nombre FROM Tipos where IdCat = " & int(request.querystring("IdCat"))
Filas=GetFilas(BdPrueba, str)
if(isarray(Filas)) then
for j = 0 to UBound(Filas,2)
response.write("<option value=""" & Filas(0,j) & """>" & Filas(1,j) & "</option>")
next
end if
end if
''''''''''''''''''''''''''''''''''''''''''''''''''
Function GetFilas(BdActual, SQL)
Set oConn = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(BdActual))
Set objRS = oConn.Execute(SQL)
if not (objRS.EOF and objRS.BOF) then
GetFilas = objRS.GetRows()
end if
oConn.Close
set objRS = nothing
set oConn = nothing
end function
''''''''''''''''''''''''''''''''''''''''''''''''''
%>
  #6 (permalink)  
Antiguo 03/05/2010, 05:02
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Extraño problema con el Ajax y el IE

Hola

Esa función se usa así, donde antes ponías document.getElementById(campo) ahora sería navegador(campo), de esta manera lo haces cross-browser.

Acabo de probarlo en IE8, ya que el 7 no lo tengo, y tampoco funciona. Si en el explores vas a
Herramientas de Desarrollo, verás que las opciones no están correctamente creadas, por lo tanto te vuelvo a decir lo que expresé en mi primer post, no estás usando el javascript para añadir opciones a un select.
Por alguna razón, que no entiendo, ese código funciona en los demás navegadores

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 03/05/2010, 08:02
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Extraño problema con el Ajax y el IE

Cita:
Iniciado por Adler Ver Mensaje
Hola

Esa función se usa así, donde antes ponías document.getElementById(campo) ahora sería navegador(campo), de esta manera lo haces cross-browser.

Acabo de probarlo en IE8, ya que el 7 no lo tengo, y tampoco funciona. Si en el explores vas a
Herramientas de Desarrollo, verás que las opciones no están correctamente creadas, por lo tanto te vuelvo a decir lo que expresé en mi primer post, no estás usando el javascript para añadir opciones a un select.
Por alguna razón, que no entiendo, ese código funciona en los demás navegadores

Suerte
Esta forma de hacerlo la he ido deduciendo de lo que he leido sobre Ajax y Asp, me parecio la forma mas logica pero no funciona.

No entiendo que me quieres decir con "las opciones no están correctamente creadas".

Si hacer esto "response.write("<option value=""" & Filas(0,j) & """>" & Filas(1,j) & "</option>")" no es la forma correcta para llenar un combo, cual es?

Gracias

Voy a intentar con la funcion que colocaste y aviso como me fue.
  #8 (permalink)  
Antiguo 03/05/2010, 09:33
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Extraño problema con el Ajax y el IE

Adler, aparentemente hay un problema entre el IE y el select, le hice un cambio a la prueba de listas y funciona perfectamente con el IE las mismas funciones de ajax.

Si puedes mirala y me comentas tus opiniones.

a la pagina ListaProc.asp le agregue:

<%
BdPrueba = "../Private/Prueba.mdb"

'Ejemplo para las listas desplegables'
if request.querystring("IdCat") <> "" then
str = "select Id_Tipo, Nombre FROM Tipos where IdCat = " & int(request.querystring("IdCat"))
Filas=GetFilas(BdPrueba, str)
if(isarray(Filas)) then
for j = 0 to UBound(Filas,2)
response.write("<option value=""" & Filas(0,j) & """>" & Filas(1,j) & "</option>")
next
end if
end if
''''''''''''''''''''''''''''''''''''''''''''''''''
Function GetFilas(BdActual, SQL)
Set oConn = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(BdActual))
Set objRS = oConn.Execute(SQL)
if not (objRS.EOF and objRS.BOF) then
GetFilas = objRS.GetRows()
end if
oConn.Close
set objRS = nothing
set oConn = nothing
end function
''''''''''''''''''''''''''''''''''''''''''''''''''
'Lo mas extraño' '<--- Esto
if request.querystring("Ver") <> "" then
response.write("estas viendo el mensaje de prueba")
end if
%>

Mira el codigo del enlace "Mostrar"

Gracias

Última edición por jochesfor; 03/05/2010 a las 10:20
  #9 (permalink)  
Antiguo 03/05/2010, 09:42
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Extraño problema con el Ajax y el IE

No puse la pagina http://www.traddies.com/listas.asp

El Ajax funciona bien, "document.getElementById" tambien, sinceramente no se porque no funciona con el select.

Al principio no estaba seguro cual era el problema, por eso puse mi tema aqui en "Asp Clasico", ya estoy seguro que mi problema es Ajax e IE, si consideras que en el foro de Ajax me podrian ayudar, algun moderador podria moverlo para no tener que crear uno nuevo.

de verdad gracias.
  #10 (permalink)  
Antiguo 03/05/2010, 10:19
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Extraño problema con el Ajax y el IE

Adler y a todo el que le interese, resolvi el problema cargando nuevamente todo el select dependiente, no se si es la forma correcta pero funciona.

La pagina es http://www.traddies.com/listas.asp

y el ultimo listaproc.asp es:

<%
BdPrueba = "../Private/Prueba.mdb"

'Ejemplo para las listas desplegables'
if request.querystring("IdCat") <> "" then
str = "select Id_Tipo, Nombre FROM Tipos where IdCat = " & int(request.querystring("IdCat"))
Filas=GetFilas(BdPrueba, str)
if(isarray(Filas)) then
response.write("<Select Name=""IdTipo"" Id=""Tip"">") '<-- AQUI
for j = 0 to UBound(Filas,2)
response.write("<option value=""" & Filas(0,j) & """>" & Filas(1,j) & "</option>")
next
response.write("</Select>")
end if
end if
''''''''''''''''''''''''''''''''''''''''''''''''''
Function GetFilas(BdActual, SQL)
Set oConn = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(BdActual))
Set objRS = oConn.Execute(SQL)
if not (objRS.EOF and objRS.BOF) then
GetFilas = objRS.GetRows()
end if
oConn.Close
set objRS = nothing
set oConn = nothing
end function
''''''''''''''''''''''''''''''''''''''''''''''''''
if request.querystring("Ver") <> "" then
response.write("estas viendo el mensaje de prueba")
end if
%>
  #11 (permalink)  
Antiguo 03/05/2010, 11:30
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Extraño problema con el Ajax y el IE

Hola

Cita:
Iniciado por jochesfor Ver Mensaje
Adler y a todo el que le interese, resolvi el problema cargando nuevamente todo el select dependiente, no se si es la forma correcta pero funciona.
Claro que es una manera correcta, mira aquí

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #12 (permalink)  
Antiguo 03/05/2010, 13:19
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Extraño problema con el Ajax y el IE

Bueno es una solucion similar, creo que buscando llegue a ese mismo codigo porque me parece conocido, a demas envia el "Select" completo desde poblaciones_ajax.asp, voy a darle un vistazo mas profundo.

Gracias

Etiquetas: ajax, extraño
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 08:21.