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

problema con una ejecucion de AJAX

Estas en el tema de problema con una ejecucion de AJAX en el foro de Frameworks JS en Foros del Web. muy obvio el titulo.. hehe bueno pasa lo siguiente amigos... estoy validando un login con ajax de manera q si existe en bd le diga ...
  #1 (permalink)  
Antiguo 20/10/2010, 15:52
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 14 años, 6 meses
Puntos: 63
Exclamación problema con una ejecucion de AJAX

muy obvio el titulo.. hehe bueno pasa lo siguiente amigos...

estoy validando un login con ajax de manera q si existe en bd le diga al usuario instantaneamente.. pero tengo un problema con la lectura del xml y no se si es el xml q creo o la interpretacion... les dejo ambos codigo para ver si me pueden ayudar... muchas gracias de antemano!


php para crear el xml:

Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/xml');
  3. include("../conf/conexion.php");
  4.  
  5.     $usuario = $_GET["usuario"];
  6.  
  7.     $sql="Select * From cc_id Where login_user='".$usuario."'";
  8.     $consulta=mysql_query($sql);
  9.     $res_bool = mysql_num_rows($consulta);
  10.    
  11.     if($res_bool!=0){
  12.         $answer="true";
  13.     }else{
  14.         $answer="false";
  15.     }
  16.    
  17.     $xml = "<?xml version='1.0' standalone='yes'?>";
  18.     $xml = $xml."<existe>";
  19.     $xml = $xml."<exist>".$answer."</exist>";
  20.     $xml = $xml."</existe>";
  21.     echo $xml;
  22.     //echo $sql;
  23. ?>

la interpretacion del xml:

Código Javascript:
Ver original
  1. function procesarRespuesta(){
  2.  
  3. // respuesta = req.responseXML;
  4.  var existe = req.responseXML.getElementsByTagName('existe').item(0).firstChild.data;
  5.    if (existe==="true"){
  6.     document.getElementById("error").style.visibility = "visible";
  7.    }else{
  8.     document.getElementById("error").style.visibility = "hidden";}
  9. }


cualquier cosa q necesiten me dicen... gracias de nuevo!


por cierto.. este es el error q me da... "req.responseXML is null" y esta la respuesta q obtengo..

Código XML:
Ver original
  1. <?xml version='1.0' standalone='yes'?>
  2. <existe>
  3. <exist>false</exist>
  4. </existe>
  #2 (permalink)  
Antiguo 20/10/2010, 16:26
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 6 meses
Puntos: 24
Respuesta: problema con una ejecucion de AJAX

Tenés que bajar un nivel más.
En lugar de

Código Javascript:
Ver original
  1. var existe = req.responseXML.getElementsByTagName('existe').item(0).firstChild.data;

hacé

Código Javascript:
Ver original
  1. var existe = req.responseXML.getElementsByTagName('existe').item(0).firstChild.firstChild.data;

Otra cosa para el php: el tipo mime del xml es 'application/xml'.
  #3 (permalink)  
Antiguo 20/10/2010, 16:45
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 14 años, 6 meses
Puntos: 63
Pregunta Respuesta: problema con una ejecucion de AJAX

excelente amigo! gracias otra vez por la gran ayuda... ya cumple la funcion.. sin embargo me sigue dando el error... alguna idea?
  #4 (permalink)  
Antiguo 20/10/2010, 17:01
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 6 meses
Puntos: 24
Respuesta: problema con una ejecucion de AJAX

¿Entonces no te está funcionando?

¿Cómo le pasás el objeto req a la función procesarRespuesta?

Normalmente, yo se lo paso como primer parámetro:
Código Javascript:
Ver original
  1. function procesarRespuesta(req){
  2.     //....
  3. }
  #5 (permalink)  
Antiguo 21/10/2010, 07:32
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 14 años, 6 meses
Puntos: 63
Exclamación Respuesta: problema con una ejecucion de AJAX

Si hace la accion (muestra el mensaje de "nick ocupado"), pero a pesar de eso sigue dando el error de que el req.responseXML esta vacio...

este es el codigo completo del ajax:

aqui manda la solicitud:

Código Javascript:
Ver original
  1. function autentica(){
  2.  usuario = document.getElementById('login_user').value;
  3.  url = "containers/existeusuario.php?usuario=" + usuario;
  4.  leer_doc(url);
  5. }

aqui recibe el xml y envia el req (donde supongo debe estar el problema):

Código XML:
Ver original
  1. function leer_doc(url) {
  2.  
  3.  req = false;
  4.  
  5.  // Llama objeto XMLHttpRequest
  6.  if (window.XMLHttpRequest) {
  7.    req = new XMLHttpRequest();
  8.    if (req.overrideMimeType) {
  9.      req.overrideMimeType('application/xml');
  10.    }
  11.  
  12.  // Si no funciona intenta utiliar el objeto IE/Windows ActiveX
  13.  } else if (window.ActiveXObject) {
  14.    req = new ActiveXObject("Microsoft.XMLHTTP");
  15.  }
  16.  
  17.  if(req!=null){
  18.    req.onreadystatechange = procesarRespuesta;
  19.    req.open('GET', url, true);
  20.    req.send(null);
  21.  }
  22.  
  23. }

y aqui procesa el xml y lanza el mensaje:



Código Javascript:
Ver original
  1. function procesarRespuesta(){
  2. // respuesta = req.responseXML;
  3.  var existe = req.responseXML.getElementsByTagName("existe").item(0).firstChild.firstChild.data;
  4.    if (existe=="true"){
  5.     document.getElementById("error").style.display = "block";
  6.    }else{
  7.     document.getElementById("error").style.display = "none";}
  8. }

Espero alguien pueda ayudarme, y muchas gracias de antemano...
  #6 (permalink)  
Antiguo 21/10/2010, 07:40
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 14 años, 6 meses
Puntos: 63
Exclamación Respuesta: problema con una ejecucion de AJAX

y probando, encontre algo bien desconcertante...

si le agrego un alert(req); a la funcion leer_doc() deja de enviar el error... no entiendo a que se deba esto... alguna idea???
  #7 (permalink)  
Antiguo 22/10/2010, 13:01
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 6 meses
Puntos: 24
Respuesta: problema con una ejecucion de AJAX

Lo que estás necesitando es un debugger.

Ahora que agregaste más código veo una gran omisión en los estados de la petición.

La petición AJAX tiene 5 estados:
  • no inicializada
  • conexión establecida
  • recibida
  • procesando
  • finalizado, respuesta lista

No podés leer la respuesta hasta que haya llegado al estado 4 y el listener para onreadystatechange se llama para cada uno de estos estados.

Código Javascript:
Ver original
  1. function leer_doc(url) {
  2.     //...
  3.  
  4.     //req.onreadystatechange = procesarRespuesta;
  5.     req.onreadystatechange = function() {
  6.         if(req.readyState == 4)
  7.             procesarRespuesta(req);
  8.     }
  9.  
  10.     //...
  11. }

Última edición por bng5; 22/10/2010 a las 13:03 Razón: se escribe procesando
  #8 (permalink)  
Antiguo 23/10/2010, 13:22
 
Fecha de Ingreso: agosto-2009
Mensajes: 4
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: problema con una ejecucion de AJAX

Trabaja con jquery + json te lo reocmiendo

Etiquetas: ajax, ejecucion
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:29.