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

problema con AJAX en IE y en FF en funcion onreadystatechange

Estas en el tema de problema con AJAX en IE y en FF en funcion onreadystatechange en el foro de Frameworks JS en Foros del Web. Hola a todos.... tengo un problema con AJAX en IE y en FF, el problema es que no se que pasa en la linea @import ...
  #1 (permalink)  
Antiguo 12/05/2011, 14:42
 
Fecha de Ingreso: octubre-2008
Mensajes: 18
Antigüedad: 16 años, 2 meses
Puntos: 1
Pregunta problema con AJAX en IE y en FF en funcion onreadystatechange

Hola a todos....

tengo un problema con AJAX en IE y en FF, el problema es que no se que pasa en la linea

Código Javascript:
Ver original
  1. ObjetoAjax.onreadystatechange=function(){

el asunto es que funciona el codigo lo mas bien en CHROME pero en los otros 2 navegadores no hay caso. he buscado la solucion por todo el foro y la web y no he dado con el problema.

me podria alguien dar una manito porfa??

el codigo es el siguiente

Código Javascript:
Ver original
  1. function crearXMLHttpRequest()
  2.     {
  3.             var xmlhttp=false;
  4.             try
  5.             {
  6.                     // Creacion del objeto AJAX para navegadores IE
  7.                     alert("creando objeto para IE");
  8.                     xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  9.                     alert("objero para IE creado con exito");
  10.             }
  11.             catch(e)
  12.             {
  13.                     try
  14.                     {
  15.                             // Creacion del objet AJAX para IE
  16.                             alert("creando objeto para IE");
  17.                             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  18.                     }
  19.                     catch(E)
  20.                     {
  21.                             alert("creo otro objeto otros navegadores");
  22.                             if (!xmlhttp && typeof XMLHttpRequest!="undefined"){xmlhttp=new XMLHttpRequest();
  23.                             alert("creo objeto otros navegadores");}
  24.                     }
  25.             }
  26.             alert (xmlhttp);
  27.             return xmlhttp;
  28.     }
  29.  
  30.    
  31.     function _Ajax(Texto)
  32.     {
  33.         alert ("1");
  34.         var ObjetoAjax=crearXMLHttpRequest();
  35.         var Variables = "";
  36.         alert ("5");
  37.         if (Texto == "resultado"){
  38.             ObjetoAjax.open("GET","proce.php?",true);
  39.             Variables = null;
  40.             alert ("6");}
  41.         else
  42.         {   ObjetoAjax.open("POST","enviarequerimiento.php",true);
  43.             ObjetoAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  44.             Variables = "TXT_Nombre_Funcionario="+TXT_Nombre_Funcionario.value+"&TXT_Departamento="+TXT_Departamento.value+"&CMB_Unidad="+CMB_Unidad.value+"&TXT_Email="+TXT_Email.value+"&TXT_Telefono="+TXT_Telefono.value+"&TXT_Mensaje="+TXT_Mensaje.value;
  45.         }
  46.         ObjetoAjax.send(Variables);
  47.         alert ("7");
  48.         try {
  49.         alert ("entro al try " + ObjetoAjax.status);
  50.         ObjetoAjax.onreadystatechange=function(){
  51.             alert ("AAAAAAAAAAA");
  52.             if(ObjetoAjax.readyState==4)
  53.                 {
  54.                 alert ("8");
  55.                 var respuesta=ObjetoAjax.responseText;  //ObjetoAjax.responseXML;
  56.                 document.getElementById(Texto).innerHTML=respuesta;
  57.                 alert ("9");
  58.                 }
  59.         alert ("FIN");
  60.         }
  61.         }
  62.         catch(e)
  63.         {alert(e);}
  64.        
  65.     }

los alert están simplemente para saber en que linea pasa algo.

y deja de pasar desde el alert
Código Javascript:
Ver original
  1. alert ("entro al try " + ObjetoAjax.status);
pero me imprime el valor 200 del status del ObjetoAjax

saludos...
  #2 (permalink)  
Antiguo 13/05/2011, 10:18
 
Fecha de Ingreso: octubre-2008
Mensajes: 18
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: problema con AJAX en IE y en FF en funcion onreadystatechange

Tambien Porbe con opera y funciona bien. ahora vere en safari que tal. no se que esta mal para que funcione en 2 navegadores y en 2 no
  #3 (permalink)  
Antiguo 13/05/2011, 11:44
 
Fecha de Ingreso: abril-2009
Mensajes: 19
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: problema con AJAX en IE y en FF en funcion onreadystatechange

en la parte de try, para cerrar el ajax tambien deberias escribir

ObjetoAjax.send();

aun si no envias nada. Prueba con esto, y si no funciona me avisas para buscar otro posible problema
  #4 (permalink)  
Antiguo 13/05/2011, 13:49
 
Fecha de Ingreso: octubre-2008
Mensajes: 18
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: problema con AJAX en IE y en FF en funcion onreadystatechange

intente lo que me dijiste del send vacío pero no llega a el, se cae en el mismo lugar de siempre.

probé con safari y funcionó sin ningún problema.


gracias por responder.
  #5 (permalink)  
Antiguo 13/05/2011, 14:09
 
Fecha de Ingreso: octubre-2008
Mensajes: 18
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: problema con AJAX en IE y en FF en funcion onreadystatechange

romilynes, gracias a tu consejo logre solucionar el problema, ahora me ocurre otro con los mismos navegadores.

los alert nuevamente están para detectar el momento de la caída del código

Código Javascript:
Ver original
  1. function _Ajax(Texto)
  2.     {
  3.         alert ("1");
  4.         var ObjetoAjax=crearXMLHttpRequest();
  5.         var Variables = "";
  6.         alert ("5");
  7.         if (Texto == "resultado"){
  8.             ObjetoAjax.open("GET","proce.php",true);
  9.             Variables = null;
  10.             alert ("6");}
  11.         else
  12.         {   alert ("else 1");
  13.             ObjetoAjax.open("POST","enviarequerimiento.php",true);
  14.             alert ("else 2");
  15.             ObjetoAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  16.             alert ("else 3");
  17.             Variables = "TXT_Nombre_Funcionario="+TXT_Nombre_Funcionario.value+"&TXT_Departamento="+TXT_Departamento.value+"&CMB_Unidad="+CMB_Unidad.value+"&TXT_Email="+TXT_Email.value+"&TXT_Telefono="+TXT_Telefono.value+"&TXT_Mensaje="+TXT_Mensaje.value;
  18.             alert ("else 4");
  19.             ObjetoAjax.send(Variables);
  20.             alert ("else 5");
  21.         }
  22.         alert ("7");
  23.         try {
  24.         //alert ("entro al try " + ObjetoAjax.status);
  25.         ObjetoAjax.onreadystatechange=function(){
  26.             alert ("AAAAAAAAAAA");
  27.             if(ObjetoAjax.readyState==4)
  28.                 {
  29.                 alert ("8");
  30.                 var respuesta=ObjetoAjax.responseText;  //ObjetoAjax.responseXML;
  31.                 document.getElementById(Texto).innerHTML=respuesta;
  32.                 alert ("9");
  33.                 }
  34.         alert ("FIN");
  35.         }
  36.         if (Texto == "resultado"){ ObjetoAjax.send(null);}
  37.         }
  38.         catch(e)
  39.         {alert(e);}
  40.        
  41.         /*Este metodo permite enviar varibles, cuando utilizamos el metodo post para enviar datos,
  42.         si encambio se usa el metodo get, simplemente se concatenan la variables al nombre de la
  43.         pagina(como lo vimos en el metodo ObjetoAjax.open). */
  44.     }

esta linea falla en IE y en FF
Código Javascript:
Ver original
  1. Variables = "TXT_Nombre_Funcionario="+TXT_Nombre_Funcionario.value+"&TXT_Departamento="+TXT_Departamento.value+"&CMB_Unidad="+CMB_Unidad.value+"&TXT_Email="+TXT_Email.value+"&TXT_Telefono="+TXT_Telefono.value+"&TXT_Mensaje="+TXT_Mensaje.value;
yo no veo el error ahí me das otra manito porfa??
  #6 (permalink)  
Antiguo 13/05/2011, 15:47
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 18 años
Puntos: 22
Respuesta: problema con AJAX en IE y en FF en funcion onreadystatechange

Claro te marcara error por que lo estas llamando directamente al campo de tu formulario prueba de esta manera:

si es por el id del campo asi:
Código PHP:
document.getElementById('TXT_Nombre_Funcionario').value 
y si es por el name de tu campo:
Código PHP:
document.formulario.TXT_Nombre_Funcionario.value 
Saludos

Última edición por ginitofl; 13/05/2011 a las 15:47 Razón: form
  #7 (permalink)  
Antiguo 16/05/2011, 07:15
 
Fecha de Ingreso: octubre-2008
Mensajes: 18
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: problema con AJAX en IE y en FF en funcion onreadystatechange

Muchas Gracias...


ahora funciona en todos los navegadores.

gracias.

Edito: por si a alguien le sirve.

quedo así.

Código Javascript:
Ver original
  1. function _Ajax(Texto)
  2.     {
  3.         var ObjetoAjax=crearXMLHttpRequest();
  4.         var Variables = "";
  5.         if (Texto == "resultado"){
  6.             ObjetoAjax.open("GET","proce.php",true);
  7.             Variables = null;}
  8.         else
  9.         {
  10.             var Funcionario = document.getElementById('TXT_Nombre_Funcionario').value;
  11.             var Departamento = document.getElementById('TXT_Departamento').value;
  12.             var Unidad = document.getElementById('CMB_Unidad').value;
  13.             var Email = document.getElementById('TXT_Email').value;
  14.             var Telefono = document.getElementById('TXT_Telefono').value;
  15.             var Mensaje = document.getElementById('TXT_Mensaje').value;
  16.            
  17.             ObjetoAjax.open("POST","enviarequerimiento.php",true);
  18.             ObjetoAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  19.             Variables = "TXT_Nombre_Funcionario="+Funcionario+"&TXT_Departamento="+Departamento+"&CMB_Unidad="+Unidad+"&TXT_Email="+Email+"&TXT_Telefono="+Telefono+"&TXT_Mensaje="+Mensaje;
  20.         }
  21.         try {
  22.             ObjetoAjax.onreadystatechange=function(){
  23.                 if(ObjetoAjax.readyState==4)
  24.                     {
  25.                     var respuesta=ObjetoAjax.responseText;  //ObjetoAjax.responseXML;
  26.                     document.getElementById(Texto).innerHTML=respuesta;
  27.                     }
  28.             }
  29.             ObjetoAjax.send(Variables);
  30.             }
  31.         catch(e)
  32.             {alert(e);}
  33.        
  34.     }

Etiquetas: ajax, onreadystatechange
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 14:01.