Retroceder   Foros del Web > Programación para sitios web > AJAX

Respuesta
 
Herramientas Desplegado
Antiguo 20-feb-2008, 16:33   #1 (permalink)
rockobop está en el buen camino
 
Avatar de rockobop
 
Fecha de Ingreso: octubre-2004
Ubicación: Bolivia
Mensajes: 783
Enviar un mensaje por MSN a rockobop
ajax bien menos en ie7

hola a todos tengo la siguiente funcion para cargar mis ajax's

Código HTML:
function ajaxFunction()
{
var xmlHttp;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    try
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    catch (e)
      {
      alert("Tu buscador no soporta AJAX!");
      return false;
      }
    }
  }
return xmlHttp
}
me funciona perfecto todo, y en casi todos los navegadores menos en ie7, alguien sabe por q puede ser esto ????

tb habia intentado de esta otra manera pero no funciona, da el mismo error

Código HTML:
function nuevoAjax()
{ 
    
    var xmlhttp=false;
    try
    {
        
        xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
        try
        {
            // Creacion del objet AJAX para IE
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(E)
        {
            if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
        }
    }
    return xmlhttp; 
}
__________________
:pensando: Tú no necesitas un libro mágico, un gurú carismático, rituales primitivos. Sólo necesitas tus cinco sentidos.:adios:
rockobop está desconectado   Responder Citando
Antiguo 21-feb-2008, 01:23   #2 (permalink)
ZiTAL tiene algunos puntos positivos de karma
 
Avatar de ZiTAL
 
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.203
Re: ajax bien menos en ie7

Que error te da?

personalmente uso esto:
Código:
function ajaxFunction()
  { var xmlHttp;
  try { xmlHttp=new XMLHttpRequest();return xmlHttp; }
  catch (e) { try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");return xmlHttp; }
  catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");return xmlHttp; }
  catch (e) { alert("Your browser does not support AJAX!");return false; }
  }}}
por lo que veo es lo mismo y a mi me funciona en IE7, tal vez el problema sea de otra cosa
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
ZiTAL está desconectado   Responder Citando
Antiguo 21-feb-2008, 04:36   #3 (permalink)
rockobop está en el buen camino
 
Avatar de rockobop
 
Fecha de Ingreso: octubre-2004
Ubicación: Bolivia
Mensajes: 783
Enviar un mensaje por MSN a rockobop
Re: ajax bien menos en ie7

no me devuelve ningun error

utilizo este ajax en selects dinamicos, la primera vez me funciona fantástico, pero si quiero cambiar los valores de los selects no me funciona el ultimo y eso solo me pasa con ie7, en los demas navegadores funciona bien


saludos
__________________
:pensando: Tú no necesitas un libro mágico, un gurú carismático, rituales primitivos. Sólo necesitas tus cinco sentidos.:adios:
rockobop está desconectado   Responder Citando
Antiguo 21-feb-2008, 05:06   #4 (permalink)
ZiTAL tiene algunos puntos positivos de karma
 
Avatar de ZiTAL
 
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.203
Re: ajax bien menos en ie7

Cuando llames al objeto ajax desde una funcion llamalo asi:
Código:
function ...
 {
  var ajax=new ajaxFunction();
  ...
 }
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
ZiTAL está desconectado   Responder Citando
Antiguo 21-feb-2008, 05:43   #5 (permalink)
rockobop está en el buen camino
 
Avatar de rockobop
 
Fecha de Ingreso: octubre-2004
Ubicación: Bolivia
Mensajes: 783
Enviar un mensaje por MSN a rockobop
Re: ajax bien menos en ie7

llamo de esa manera a mi ajax

mira te copio mi cod completo del scritp ajax

Código HTML:
function nuevoAjax()
{ 
    /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
    lo que se puede copiar tal como esta aqui */
    var xmlhttp=false;
    try
    {
        // Creacion del objeto AJAX para navegadores no IE
        xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
        try
        {
            // Creacion del objet AJAX para IE
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(E)
        {
            if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
        }
    }
    return xmlhttp; 
}

// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var listadoSelects=new Array();
listadoSelects[0]="departamento";
listadoSelects[1]="materias";
listadoSelects[2]="gestiones";
listadoSelects[3]="programas";

function buscarEnArray(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 cargaContenido(idSelectOrigen)
{
    // Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
    var posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen)+1;
    
        // Obtengo el select que el usuario modifico
    var selectOrigen=document.getElementById(idSelectOrigen);
    
        // 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(listadoSelects[x])
        {
            selectActual=document.getElementById(listadoSelects[x]);
            selectActual.length=0;
            
            var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona........";
            selectActual.appendChild(nuevaOpcion);    selectActual.disabled=true;
            x++;
        }
    }
    // Compruebo que el select modificado no sea el ultimo de la cadena
    else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
    {
        // Obtengo el elemento del select que debo cargar
        var idSelectDestino=listadoSelects[posicionSelectDestino];
        var selectDestino=document.getElementById(idSelectDestino);
        
                // 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();
        ajax.open("GET", "proceso.jsp?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
        ajax.onreadystatechange=function() 
        { 
            if (ajax.readyState==1)
            {
                // Mientras carga elimino la opcion "Selecciona ..." 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.responseText;
            } 
        }
        ajax.send(null);
    }
}
gracias por todo

saludos
__________________
:pensando: Tú no necesitas un libro mágico, un gurú carismático, rituales primitivos. Sólo necesitas tus cinco sentidos.:adios:
rockobop está desconectado   Responder Citando
Antiguo 21-feb-2008, 06:45   #6 (permalink)
Colaborador
Panino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy pronto
 
Avatar de Panino5001
 
Fecha de Ingreso: mayo-2004
Ubicación: Buenos Aires
Mensajes: 1.677
Re: ajax bien menos en ie7

Cita:
Iniciado por rockobop Ver Mensaje
llamo de esa manera a mi ajax
Y dónde está el operador new que menciona Zitalk en la llamada a la función ajax?
Cita:
Iniciado por rockobop Ver Mensaje
var ajax=nuevoAjax();
Zitalk te está diciendo que debería ser así:
Código PHP:
var ajax=new nuevoAjax(); 
En algunos casos, dependiendo de la estructura, ese operador es necesario.
También conviene poner a null onreadystatechange al finalizar el intercambio, para evitar fugas de memoria.

Última edición por Panino5001; 21-feb-2008 a las 06:50.
Panino5001 está desconectado   Responder Citando
Antiguo 21-feb-2008, 06:51   #7 (permalink)
rockobop está en el buen camino
 
Avatar de rockobop
 
Fecha de Ingreso: octubre-2004
Ubicación: Bolivia
Mensajes: 783
Enviar un mensaje por MSN a rockobop
Re: ajax bien menos en ie7

justo aqui, en este pedazo mas resumido del codigo en la linea 7

Código PHP:
// Obtengo el elemento del select que debo cargar
        
var idSelectDestino=listadoSelects[posicionSelectDestino];
        var 
selectDestino=document.getElementById(idSelectDestino);
        
                
// 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();
        
ajax.open("GET""proceso.jsp?select="+idSelectDestino+"&opcion="+opcionSeleccionadatrue);
        
ajax.onreadystatechange=function() 
        { 
            if (
ajax.readyState==1)
            {
                
// Mientras carga elimino la opcion "Selecciona ..." y pongo una que dice "Cargando..."
                
selectDestino.length=0;
                var 
nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0nuevaOpcion.innerHTML="Cargando...";
                
selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;    
            }
            if (
ajax.readyState==4)
            {
                
selectDestino.parentNode.innerHTML=ajax.responseText;
            } 
        }
        
ajax.send(null);
    }

saludos
__________________
:pensando: Tú no necesitas un libro mágico, un gurú carismático, rituales primitivos. Sólo necesitas tus cinco sentidos.:adios:
rockobop está desconectado   Responder Citando
Antiguo 21-feb-2008, 06:53   #8 (permalink)
Colaborador
Panino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy pronto
 
Avatar de Panino5001
 
Fecha de Ingreso: mayo-2004
Ubicación: Buenos Aires
Mensajes: 1.677
Re: ajax bien menos en ie7

Disculpá, será el stress, pero sigo sin ver un new delante de nuevoAjax();
Panino5001 está desconectado   Responder Citando
Antiguo 21-feb-2008, 07:03   #9 (permalink)
rockobop está en el buen camino
 
Avatar de rockobop
 
Fecha de Ingreso: octubre-2004
Ubicación: Bolivia
Mensajes: 783
Enviar un mensaje por MSN a rockobop
Re: ajax bien menos en ie7

perdon si no tenia el new, el q esta mal de la vista soy soy, pero ahora lo cambien y sigue dando el mismo problema

saludos
__________________
:pensando: Tú no necesitas un libro mágico, un gurú carismático, rituales primitivos. Sólo necesitas tus cinco sentidos.:adios:
rockobop está desconectado   Responder Citando
Antiguo 21-feb-2008, 07:06   #10 (permalink)
rockobop está en el buen camino
 
Avatar de rockobop
 
Fecha de Ingreso: octubre-2004
Ubicación: Bolivia
Mensajes: 783
Enviar un mensaje por MSN a rockobop
Re: ajax bien menos en ie7

Cita:
Iniciado por Panino5001 Ver Mensaje
Y dónde está el operador new que menciona Zitalk en la llamada a la función ajax?

En algunos casos, dependiendo de la estructura, ese operador es necesario.
También conviene poner a null onreadystatechange al finalizar el intercambio, para evitar fugas de memoria.
sobre lo del onreadystatechange, en mi codigo en q parte tendria q añadir esto, espero no ser molesto

saludos
__________________
:pensando: Tú no necesitas un libro mágico, un gurú carismático, rituales primitivos. Sólo necesitas tus cinco sentidos.:adios:
rockobop está desconectado   Responder Citando
Antiguo 21-feb-2008, 07:11   #11 (permalink)
Colaborador
Panino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy pronto
 
Avatar de Panino5001
 
Fecha de Ingreso: mayo-2004
Ubicación: Buenos Aires
Mensajes: 1.677
Re: ajax bien menos en ie7

Bueno, pero ya podés estar seguro de que el problema no es Ajax. Ya sabés que tiene que estar o en Javascript (quizá una variable se llame igual que el id de un elemento y Explorer las confunde o alguna de esas cosas maravillosas que hace ese navegador para mantener nuestro ingenio al día) o en el servidor. Por lo menos, un lugar menos donde buscar
Panino5001 está desconectado   Responder Citando
Antiguo 21-feb-2008, 07:12   #12 (permalink)
Colaborador
Panino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy pronto
 
Avatar de Panino5001
 
Fecha de Ingreso: mayo-2004
Ubicación: Buenos Aires
Mensajes: 1.677
Re: ajax bien menos en ie7

Sería aquí:
Código PHP:
if (ajax.readyState==4)
            {
                
selectDestino.parentNode.innerHTML=ajax.responseText;
                
ajax.onreadystatechange=null;
            } 
Panino5001 está desconectado   Responder Citando
Antiguo 21-feb-2008, 07:22   #13 (permalink)
ZiTAL tiene algunos puntos positivos de karma
 
Avatar de ZiTAL
 
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.203
Re: ajax bien menos en ie7

o utilizar el depurador por excelencia del javascript:

alert

a poner alert's a cascoporro ;) ya veras que facil encuentras donde te hace/no te hace la cosa en cuestion.
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
ZiTAL está desconectado   Responder Citando
Antiguo 22-feb-2008, 09:51   #14 (permalink)
MaBoRaK llegará a ser famoso muy prontoMaBoRaK llegará a ser famoso muy pronto
 
Avatar de MaBoRaK
 
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 1.781
Enviar un mensaje por MSN a MaBoRaK
Re: ajax bien menos en ie7

loading............



Hola hermano Boliviano.

Bueno si dices que no no te salta error alguno, puede que tu proceso AJAX no se est'e inicializando o bien, que TU NO VEAS el resultado.

Esto puede ser por algun error DOM

Por ejemplo.

Código PHP:
                selectDestino.length=0;
                var 
nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0nuevaOpcion.innerHTML="Cargando...";
                
selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true
el objeto Option, no tiene la propiedad innerHTML, pero s'i la propiedad 'text' y deber'ia ser.

Código PHP:
selectDestino.length=0;
selectDestino.options[selectDestino.length] = new Option('Cargando....',0);
selectDestino.disabled=true
Supongo que con

selectDestino.length=0; <== tratas de eliminar los elementos del Select. Pero es igual INCORRECTO.

O nose.. tantas cosas :D Y como dice, tendras que depurarlo manualmente.


Código PHP:
        ajax.onreadystatechange=function() 
        { 
            if (
ajax.readyState==1)
            {
alert('Iniciado');
                
// Mientras carga elimino la opcion "Selecciona ..." y pongo una que dice "Cargando..."
                
selectDestino.length=0;
                var 
nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0nuevaOpcion.innerHTML="Cargando...";
                
selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;    
            }
            if (
ajax.readyState==4)
            {
alert('Terminado con el resultado:'+ajax.responseText);
                
selectDestino.parentNode.innerHTML=ajax.responseText;
            } 
        } 
Si ambos alert se disparan con los resultados esperados, entonces tienes errores DOM y f.....ng.. IE nunca te los va a reportar.


connection closed.
__________________
maborak@maborak.com
http://www.maborak.com
Maborak technologies
MaBoRaK está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 07:14.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93