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

Funciona en IE6 pero no en Firefox

Estas en el tema de Funciona en IE6 pero no en Firefox en el foro de Frameworks JS en Foros del Web. Hola a todos, estoy aprendiendo AJAX. Tengo un código que toma los datos del usuario y realiza la petición a un archivo php. El problema ...
  #1 (permalink)  
Antiguo 16/08/2011, 22:25
Avatar de neb642  
Fecha de Ingreso: noviembre-2010
Ubicación: Argentina
Mensajes: 29
Antigüedad: 14 años
Puntos: 3
Funciona en IE6 pero no en Firefox

Hola a todos, estoy aprendiendo AJAX. Tengo un código que toma los datos del usuario y realiza la petición a un archivo php. El problema es que con Firefox (version 4) no se ejecuta la funcion de respuesta.


( las instrucciones comienzan con: onClick="GO('asd.php')" )


Código:
<script>
function GO(direccion) {
//Creando el objeto XHR
miXHR = crearXHR();
//PREPARARLO y PREPARAR FORM
miXHR.open('POST', direccion, true);
miXHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//FUNCION RESPUESTA
miXHR.onReadyStateChange = function() {
alert('funcion de respuesta');
var divr = document.getElementById('divr');
if (miXHR.readyState==4) {
divr.innerHTML = 'Completado. ' + miXHR.responseText;
}
else
{
divr.innerHTML = 'Cargando...';
}
}
//ENVIO
miXHR.send(datosform());
}


function crearXHR() {
var obXHR= null;
if (window.XMLHttpRequest) {var obXHR = new XMLHttpRequest();} else {
if (window.ActiveXObject) {var obXHR = new ActiveXObject('Microsoft.XMLHTTP');} }
return obXHR;
}

function datosform() {

//[aca va una parte del codigo en donde se recogen los datos del formulario]


alert(cadena);
/*aca la cadena queda:  id=29&motivo=esta loco&sino=2&vencimiento=1992-01-01*/
return cadena;


}
</script>


Como verán:

miXHR.onreadyStateChange = function() {bla bla bla}

ese bla bla bla se ejecuta en IE6, pero no en Firefox.

He intentado tambien:

miXHR.onreadyStateChange = respuesta;
function respuesta() {bla bla bla}

pero tampoco se ejecuta.

Algun consejo? Gracias por leer.
  #2 (permalink)  
Antiguo 17/08/2011, 04:49
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años, 6 meses
Puntos: 9
Respuesta: Funciona en IE6 pero no en Firefox

Hola,

prueba con esta función en lugar de la que tienes ahora [ function crearXHR() ]:

Código:
function crearXMLHttpRequest() 
{
  var xmlHttp=null;
  if (window.ActiveXObject) 
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  else 
    if (window.XMLHttpRequest) 
      xmlHttp = new XMLHttpRequest();
  return xmlHttp;
}
Saludos.
  #3 (permalink)  
Antiguo 17/08/2011, 14:57
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Funciona en IE6 pero no en Firefox

aparte de la solución de @yournightmare86, necesitas usar var para declarar las variables:

Código Javascript:
Ver original
  1. //Creando el objeto XHR
  2. var miXHR = crearXHR();
  3. //o
  4. //Creando el objeto XHR
  5. var miXHR = crearXMLHttpRequest() ;


otra función para crear el XmlHttpRequest:
Código Javascript:
Ver original
  1. function getajax(){
  2.         try {
  3.             xmlhttpobj = new ActiveXObject("Msxml2.XMLHTTP");
  4.         } catch (ex) {
  5.             try {
  6.                 xmlhttpobj= new ActiveXObject("Microsoft.XMLHTTP");
  7.             } catch (ex2) {
  8.                 xmlhttpobj= false;
  9.             }
  10.         }
  11.         if (!xmlhttpobj && typeof XMLHttpRequest!='undefined') {
  12.             xmlhttpobj = new XMLHttpRequest();
  13.         }
  14.         return xmlhttpobj;
  15.     }
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 19/08/2011, 05:27
Avatar de neb642  
Fecha de Ingreso: noviembre-2010
Ubicación: Argentina
Mensajes: 29
Antigüedad: 14 años
Puntos: 3
Respuesta: Funciona en IE6 pero no en Firefox

Gracias por las respuestas. Al final el inconveniente era que para Firefox caprichoso la propiedad onreadystatechange tenia que estar toda en minusculas. Saludos

Etiquetas: ajax, explorer, ff4, firefox, ie6, internet, mozilla, php
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 09:19.