Foros del Web » Programando para Internet » Javascript »

Problema con los navegadores

Estas en el tema de Problema con los navegadores en el foro de Javascript en Foros del Web. Cabe aclarar que no se mucho de ajax (por no decir nada)y el siguiente codigo es copiado desde esta web , en realidad fui juntando ...
  #1 (permalink)  
Antiguo 11/06/2013, 14:44
 
Fecha de Ingreso: octubre-2011
Ubicación: Rosario
Mensajes: 30
Antigüedad: 12 años, 6 meses
Puntos: 1
Problema con los navegadores

Cabe aclarar que no se mucho de ajax (por no decir nada)y el siguiente codigo es copiado desde esta web , en realidad fui juntando codigo y salio este mostrito.

El problema es el siguiente , en FireFox me anda maso menos bien , si al ultimo else , le saco el alert (""); , es como que no existiese ningun error , ahora si lo dejo ,sale el alert(""); pero a continuacion me muestra la pagina que le pido.


En cambio en Chrome , Opera , me sale el alert("") y no me carga la pagina.
Y en IE 9 directamente ni me aparece el alert("") y tampoco carga la pagina.

Estoy seguro que me falta codigo , pero no tengo idea que codigo X_x.

ajax.js

Código PHP:
        function Carga(url,id)
            {
                var 
objeto;    //Creo un objeto dependiendo del navegador

                
if (window.XMLHttpRequest)
                {
                    
//Mozilla, Safari, etc
                    
objeto = new XMLHttpRequest();
                }
                    else if (
window.ActiveXObject)
                    {
                        
//IE
                        
try {
                                
objeto = new ActiveXObject("MSXML2.XMLHTTP");
                        } 
                        catch (
e) {
                                try { 
//Version mas antigua
                                    
objeto = new ActiveXObject("Microsoft.XMLHTTP");
                                } catch (
e) {}
                        }
                    }
                if (!
objeto)
                {
                    
alert("No ha sido posible crear un objeto de XMLHttpRequest");
                }
                
//Cuando XMLHttpRequest cambie de estado, ejecutamos esta funcion
                
objeto.onreadystatechange=function()
                {
                    
cargarobjeto(objeto,id)
                }
                
objeto.open('GET'urltrue// indicamos con el método open la url a cargar de manera asíncrona
                
objeto.send(null// Enviamos los datos con el metodo send
            
}
                
                function 
cargarobjeto(objetoid)
                {
                    if (
objeto.readyState == 4){ //si se ha cargado completamente
                    
document.getElementById(id).innerHTML=objeto.responseText
                    
}
                    else{ 
//en caso contrario, mostramos un gif simulando una precarga
                        //document.getElementById(id).innerHTML='<img src="loader.gif" alt="cargando" />'
                        
alert("No se pudo");
                    }
                } 


index.html

Código PHP:
            <li><a href="javascript:Carga('propiedades.html','contenido');">Propiedades</a></li>         
            <
li><a href="javascript:Carga('promociones.html','contenido');">Promociones</a></li>                 
            <
li><a href="javascript:Carga('contacto.html','contenido');">Contacto</a></li
Asi llamo las paginas al div con el id llamado contenido.
  #2 (permalink)  
Antiguo 11/06/2013, 17:04
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 9 meses
Puntos: 103
Respuesta: Problema con los navegadores

Hola ! mira, te voy a decir 2 cosas
cuando entras en este else,
Código Javascript:
Ver original
  1. else{ //en caso contrario, mostramos un gif simulando una precarga
  2.                         //document.getElementById(id).innerHTML='<img src="loader.gif" alt="cargando" />'
  3.                         alert("No se pudo");
  4.                     }

estas entrando mal, ya que onreadystatechange se ejecuta como 4 o 5 veces, y los readyStates van cambiando desde 1 a 4. asi que no muestres no se pudo hacer.

despues, el error mas grande, es que poner javascript:codigo en un href esta completamente desaconsejado. una mejor opcion es
Código HTML:
Ver original
  1. <li><a onclick="Carga('propiedades.html','contenido');">Propiedades</a></li>          
  2.             <li><a onclick="Carga('promociones.html','contenido');">Promociones</a></li>                  
  3.             <li><a onclick="Carga('contacto.html','contenido');">Contacto</a></li>
es mejor usar el atributo onclick, y el codigo directamente

un saludo
__________________
Hangouts de JavaScript todos los jueves 20hs GMT, Unite !
https://plus.google.com/u/0/108504944676960830886
  #3 (permalink)  
Antiguo 11/06/2013, 20:41
 
Fecha de Ingreso: octubre-2011
Ubicación: Rosario
Mensajes: 30
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema con los navegadores

Cita:
Iniciado por chwc Ver Mensaje
Hola ! mira, te voy a decir 2 cosas
cuando entras en este else,
Código Javascript:
Ver original
  1. else{ //en caso contrario, mostramos un gif simulando una precarga
  2.                         //document.getElementById(id).innerHTML='<img src="loader.gif" alt="cargando" />'
  3.                         alert("No se pudo");
  4.                     }

estas entrando mal, ya que onreadystatechange se ejecuta como 4 o 5 veces, y los readyStates van cambiando desde 1 a 4. asi que no muestres no se pudo hacer.

un saludo
A que te referis que estoy entrando mal? , saque el else ese que me dijiste pero sigue igual (el alert fue puesto a proposito para encontrar donde esta el error)

Si entra en ese else quiere decir que el readystate no es 4 (quiere decir que responseText no tiene todos los datos que fueron pedidos al servidor, no?)

Ahora , porque en FireFox anda , y en los demas no?

En IE9 cuando apreto en los links que me dijiste que corrija directamente no pasa nada.
En Opera y Chrome si pasa algo , se pone el contenedor(div) en blanco (no viene la pagina que yo pedi) pero por lo menos pasa algo.

Estoy empezando a creer que lo falla no es ajax (el codigo en si) , desde que me contestaste estoy googleando a mas no poder y casi que todos los codigo son similar a este o igual.

Gracias por tu ayuda.

Etiquetas: 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 18:21.