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

AJAX no funciona en FireFox (si en Explorer)

Estas en el tema de AJAX no funciona en FireFox (si en Explorer) en el foro de Frameworks JS en Foros del Web. Hola, tengo un aplicacione donde los usuarios se loguean y la validacion la hago mediante AJAX. La aplicacion funciona muy bien en Opera, Explorer, Nescape ...
  #1 (permalink)  
Antiguo 19/05/2006, 11:37
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Desacuerdo AJAX no funciona en FireFox (si en Explorer)

Hola, tengo un aplicacione donde los usuarios se loguean y la validacion la hago mediante AJAX. La aplicacion funciona muy bien en Opera, Explorer, Nescape pero no en FireFox.
Les dejo aqui el codigo para ver si alguien tiene idea de que puede ser, ya busque todo acerca de AJAX con Firefox y no encuentro donde puede estar el error

Código:
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;
}


function cargarContenido(id){
	if(id!=0){
		var t1, t2, res, funcion, valor;
		ajax = nuevoAjax();
		ajax.open("POST", "verificar_usuario.asp",false);
		//hasta aqui llega en Firefox, despues no sigue mas
		ajax.onreadystatechange=function() {
			if (ajax.readyState==4) {
				res  = ajax.responseXML.documentElement;
				funcion = res.getElementsByTagName('funcion')[0].firstChild.data;
				valor = res.getElementsByTagName('valor')[0].firstChild.data;
				eval(funcion + '(valor)');
			}
		}
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send("usuario=" + document.form1.usuario.value + "&pass=" + document.form1.pass.value + "&campus=" + document.form1.campus.value);
	}
}
window.onload= function(){cargarContenido(0)}
Agradecere cualquier opinion

Gracias!!!!

san
  #2 (permalink)  
Antiguo 19/05/2006, 14:49
Avatar de JALF  
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 634
Antigüedad: 20 años, 2 meses
Puntos: 2
hola!!!!
que tal si pruebas con esta funcion!!!

Código:
function nuevoAjax(){
var satelite=false; 
/* Compatibilidad con FireFox, Opera y cualquier otro BUEN navegador */
  if(typeof(XMLHttpRequest) != 'undefined'){
    try{
      var satelite = new XMLHttpRequest();
    }
    catch(e){ }
  }
  else{
    /* Compatibilidad para el navegador más ASQUEROSO del planeta [ IE ] */
    try{
      var satelite = new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch(e){
      var satelite = new ActiveXObject('Msxml2.XMLHTTP');
    }
  }
  return xmlhttp;
}
intenta con esa nueva función a ver si te sirve!!!!
__________________
Ubuntu User # 15554
http://dubaiphp.wordpress.com/ -Mi vida de desarrollo, juegos y algo más en un Blog-
  #3 (permalink)  
Antiguo 19/05/2006, 15:50
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 10 meses
Puntos: 3
Yo tenia ese mismo problema, hasta que use esta funcion:
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;
}
  #4 (permalink)  
Antiguo 21/05/2006, 22:43
 
Fecha de Ingreso: mayo-2006
Mensajes: 2
Antigüedad: 18 años, 6 meses
Puntos: 0
Sonrisa No uses xmlhttp.onreadystatechange

A ver que te parece esto, a mi me dio resultado:

xmlhttp.open("GET", sURL, false);
xmlhttp.send(null);

if((xmlhttp.readyState == 4) && (xmlhttp.status == 200))
oDiv.innerHTML = xmlhttp.responseText;

Espero te sirva, si no has resuelto el problema ya

Última edición por osvf; 11/06/2006 a las 16:56
  #5 (permalink)  
Antiguo 22/05/2006, 11:39
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
De acuerdo Sslucionado

Bueno, al fin encontre el problema. El mismo estaba en el tipo de sincronismo de la peticion (en el metodo OPEN), yo lo tenia en false y parece que Firefox solo funciona cuando esta en true (al menos en mi aplicacion)

Gracias igual por todo

Saludos!!!!!
  #6 (permalink)  
Antiguo 22/05/2006, 11:59
Avatar de JALF  
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 634
Antigüedad: 20 años, 2 meses
Puntos: 2
De acuerdo

Cita:
Iniciado por sanref
Bueno, al fin encontre el problema. El mismo estaba en el tipo de sincronismo de la peticion (en el metodo OPEN), yo lo tenia en false y parece que Firefox solo funciona cuando esta en true (al menos en mi aplicacion)

Gracias igual por todo

Saludos!!!!!
De nada!!!, pregunta siempre que tengas dudas!!!!
__________________
Ubuntu User # 15554
http://dubaiphp.wordpress.com/ -Mi vida de desarrollo, juegos y algo más en un Blog-
  #7 (permalink)  
Antiguo 22/05/2006, 12:31
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
ahora otro problema

Ahora tengo necesito saber si en firefox AJAX puede funcionar sincrono (es decir, seteado a false y no a true como yo lo puse)

Si alguien sabe, ya cree un post....
  #8 (permalink)  
Antiguo 11/06/2006, 17:09
 
Fecha de Ingreso: mayo-2006
Mensajes: 2
Antigüedad: 18 años, 6 meses
Puntos: 0
AJAX síncrono en FireFox

Que tal sanref!

Ya modifiqué el mesaje que había posteado (#4). Ahí esta la solución al problema. Ya lo he probado tanto en IE como en FireFox. La cuestión está en que NO uses "ajax.onreadystatechange=function()", ya que FireFox no lo reconoce como tal.

Si deseas utilizar "ajax.onreadystatechange=function()", te recomiendo que lo hagas de la forma "ajax.onreadystatechange= fhandler()" donde "fhandler" es una funcion que contrendrá el "ajax.readyState == 4" y tu sabrás qué más , aunque yo no lo haría...
  #9 (permalink)  
Antiguo 12/06/2006, 17:10
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
loading.............


No entiendo... siempore he usado ajax en forma asincrona y sincrona tambien los readystates=function() y nunca me dio problemas :S


connection closed.
__________________

Maborak Technologies
  #10 (permalink)  
Antiguo 26/06/2006, 08:53
 
Fecha de Ingreso: agosto-2005
Mensajes: 142
Antigüedad: 19 años, 2 meses
Puntos: 0
Hola atodos , estoy dando los primeros pasitos en AJAX bajo DWR y ya tengo los primeros tropiezos estoy recargando un formulario utilizando DWR bajo struts que funciona bien en IE pero no en Firefox Me da el siguiente error

removeAllOptions() can't find an element with id: 'aquí el nombre de la property'
addOptions() can't find an element with id: 'aquí el nombre de la property'

Me parece que es algo relacionado con el XMLHttpRequest y el Mozilla que no acaban de entenderse

A continuacion os pongo el codigo a ver si alguien ve algun tipo de incorrección

Código PHP:
<script language="JavaScript" type="text/JavaScript">
<!--
    function 
actualizarPoblaciones() {
    
        var 
codProv document.forms[0].elements['nuevaProv.provincia'].value;
        
//alert(codProv);
        
Demo.getPoblaciones(fillPoblacionescodProv); // llamada remota al app server
    
}
    
    function 
fillPoblaciones(data) {
        
DWRUtil.removeAllOptions("nuevoPoblacion.poblacion"); // vaciamos el combo
        
DWRUtil.addOptions("nuevoPoblacion.poblacion"data"codigoINE""nombre"); // rellenamos el combo con los datos recibidos del servidor
    
}
//-->
</script> 

Muchas gracia por todo y hasta pronto

Última edición por OrionKing; 26/06/2006 a las 09:35
  #11 (permalink)  
Antiguo 07/06/2007, 09:42
 
Fecha de Ingreso: junio-2007
Mensajes: 5
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: AJAX no funciona en FireFox (si en Explorer)

hola a todos necesito de su ayuda por favor tengo exactamente el mismo problema que todos utilizo ajax para hacer combos anidados los cuales me devuelven la variable seleccionada el problema es que solo funciona en IE y no en Firefox quisiera saber a que se debe les pongo el codigo de ajax:

//validacion para todos los navegadores, se supone
function nuevoAjax(){
var xmlhttp=true;
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;
}

//close validacion



// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var listadoSelects=new Array();
listadoSelects[0]="paises";
listadoSelects[1]="estados";

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(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(listadoSelects[x])
{
selectActual=document.getElementById(listadoSelect s[x]);
selectActual.length=0;

var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opci&oacute;n...";
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(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();
ajax.open("GET", "select_dependientes_proceso.php?select="+idSelect Destino+"&opcion="+opcionSeleccionada, 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.enabled=true;
}
if (ajax.readyState==4)
{
selectDestino.parentNode.innerHTML=ajax.responseTe xt;
}
}
ajax.send(null);
}
}

si me pueden ayudar llevo varios dias intentando y nada, gracias...
  #12 (permalink)  
Antiguo 07/06/2007, 10:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: AJAX no funciona en FireFox (si en Explorer)

Te paso como lo tengo yo y me funciona en IE y FF

Código:
var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest

function getHTTPObject() {
    var xmlhttp;
    /*@cc_on
    @if (@_jscript_version >= 5)
       try {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
          try {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (E) { xmlhttp = false; }
       }
    @else
    xmlhttp = false;
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
       try {
          xmlhttp = new XMLHttpRequest();
       } catch (e) { xmlhttp = false; }
    }
    return xmlhttp;
}

function cargar_combo() {
	if (http) {
		   http.open("POST", "pagina_que_llamas.asp", true);
		   http.onreadystatechange = handleHttpResponse;
		   http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		   http.send("aca podes mandar datos a pagina_que_llamas.asp");
	}
}

function handleHttpResponse() {
	if (http.readyState==1) {
			/* aca podes mostrar un mensaje (wait...)*/	
	} 
    if (http.readyState == 4) { 
       if (http.status == 200) { 
          if (http.responseText.indexOf('invalid') == -1) {
             	/*aca tomas los datos que te manda pagina_que_llamas.asp y hace lo que tengas que hacer*/
                        div.innerHTML = http.responseText;
                          /*div es el lugar donde mostras lo que te devuelve*/
				
          }
       }
    }
}
espero te sirva.
Saludos
__________________
Nadie nacío sabiendo...
  #13 (permalink)  
Antiguo 07/06/2007, 10:30
 
Fecha de Ingreso: junio-2007
Mensajes: 5
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: AJAX no funciona en FireFox (si en Explorer)

no me funciona, alguna idea mas...
  #14 (permalink)  
Antiguo 07/06/2007, 10:39
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: AJAX no funciona en FireFox (si en Explorer)

Cual es especificamente el problema que te da?? se queda clavado esperando?? te tira algun error?

Praba reemplazar la parte del codigo que te mande por este

Código:
function handleHttpResponse() {
	if (http.readyState==1) {
			/* aca podes mostrar un mensaje (wait...)*/	
	} 
    if (http.readyState == 4) { 
       //if (http.status == 200) { 
          //if (http.responseText.indexOf('invalid') == -1) {
             	/*aca tomas los datos que te manda pagina_que_llamas.asp y hace lo que tengas que hacer*/
                        div.innerHTML = http.responseText;
                          /*div es el lugar donde mostras lo que te devuelve*/
				
          //}
       //}
    }
}
asi, si te da error la pagina a la cual llamas mediate ajax, te va a aparecer el error en la pagina desde la cual la llamas.

Es raro, a mi me funciona muy bien en FF, sin inconvenientes
__________________
Nadie nacío sabiendo...
  #15 (permalink)  
Antiguo 07/06/2007, 10:55
 
Fecha de Ingreso: junio-2007
Mensajes: 5
Antigüedad: 17 años, 5 meses
Puntos: 0
explicando bien el problema

tengo un combo que me desplega ciudades y cada ciudad tiene diferentes Parques industriales, todo me sale perfectamente bien le doy clic a la ciudad y aparecen los respectivos parques. hasta ahi todo bien!!!!! hago un "echo" para comprobar que en realida si me esta dando las variables solicitadas las del combo Ciudad y las del Combo Parque, el problema es que con IE si me desplega bien las dos variables solicitadas apareciendo algo como esto:

ciudad : 6

parque: 90

pero en firefox solo me aparece esto:

ciudad: 6
Parque:

y pues todo eso lo voy a guardar en una base de datos, utilizo PHP si deseas te puedo enviar todos los archivos algun correo...
  #16 (permalink)  
Antiguo 07/06/2007, 11:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: AJAX no funciona en FireFox (si en Explorer)

Yo trabajo en ASP, pero toco algo de PHP, si quieres puedes mandarme los archivos a [email protected] y le echo un ojo...
__________________
Nadie nacío sabiendo...
  #17 (permalink)  
Antiguo 07/06/2007, 11:27
 
Fecha de Ingreso: junio-2007
Mensajes: 5
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: AJAX no funciona en FireFox (si en Explorer)

Ok, en seguida te lo envio.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 18:45.