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

Problemita con el XMLHTTPREQUEST

Estas en el tema de Problemita con el XMLHTTPREQUEST en el foro de Frameworks JS en Foros del Web. Buenas, tengo un problema... hago esto: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original try {     alert ( "xml" ) ;     var ...
  #1 (permalink)  
Antiguo 23/07/2009, 19:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 16 años, 3 meses
Puntos: 10
Pregunta Problemita con el XMLHTTPREQUEST

Buenas, tengo un problema... hago esto:

Código Javascript:
Ver original
  1. try
  2. {
  3.     alert("xml");
  4.     var xml = objetoXHR.responseXML;
  5.     alert("root");
  6.     var root = xml.getElementsByTagName("resultado")[0];
  7.     alert("elem");
  8.     var elem = root.getElementsByTagName("mensaje")[0];
  9.     alert("value");
  10.     alert(elem.firstChild.nodeValue);
  11. }

Pero el alert("elem"); no ocurre... eso quiere decir que el problema es la linea:
var root = xml.getElementsByTagName("resultado")[0];

El php devuelve lo siguiente:

Código PHP:
Ver original
  1. <resultado><mensaje>CONSULTA: INSERT INTO cuentas (nombre,mail,password) VALUES ('LhaN','mail.com','735b3cdf8acc7')
  2. ERROR: Duplicate entry 'LhaN' for key 1
  3. Ocurrio un error durante la insercion de datos.
  4. Intentelo mas tarde o comuniquese con el administrador.</mensaje><status>ERROR</status></resultado>

Que podra ser????

Última edición por LhaN; 24/07/2009 a las 07:34
  #2 (permalink)  
Antiguo 24/07/2009, 05:49
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemita con el XMLHTTPREQUEST

Hola

Ese error significa que el campo que hayas definido como clave primaria tienes una entrada duplicada, lo cual esta absolutamente prohibido en mysql y cualquier otro motor de BD
La solución seria que elimines esa linea que esta duplicada. o redefinas el campo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 24/07/2009, 07:32
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Problemita con el XMLHTTPREQUEST

No... ese no es el problema... mi problema no es el error sql que ocasione a proposito con el objetivo de enviar un xml con dos elementos, el mensaje y el estado... el problema esta en la manipulacion del requestXML, el cual como dije me da error en:
var root = xml.getElementsByTagName("resultado")[0];

Tambien lo intente con:
objetoXHR.responseXML.getElementsByTagName("result ado")[0];

Lo mas gracioso es que si utilizo:
alert(objetoXHR.responseText);

Me muestra lo que devuelve el php (justamente haciendo eso pude copiar y pegar lo que me devuelve el php).
  #4 (permalink)  
Antiguo 24/07/2009, 07:52
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemita con el XMLHTTPREQUEST

Cita:
Iniciado por LhaN Ver Mensaje
Lo mas gracioso es que si utilizo:
alert(objetoXHR.responseText);

Me muestra lo que devuelve el php (justamente haciendo eso pude copiar y pegar lo que me devuelve el php).
Por esa razón te comente que el problema está en la consulta. Prueba con el Firebug de FF y verás como te trae el mismo error

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 24/07/2009, 08:34
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 16 años, 3 meses
Puntos: 10
Exclamación Respuesta: Problemita con el XMLHTTPREQUEST

No puse el codigo completo por que me parecio absurdo ponerlo dado que nadie lee el codigo completo y que el problema esta en donde yo marque, y utilizando el responseText no me dio dramas... pero aqui esta el codigo completo:

Código Javascritp:
Ver original
  1. function respuestaAlRegistro()
  2. {
  3.     if(objetoXHR.readyState==READY_STATE_COMPLETE)
  4.     {
  5.         if(objetoXHR.status==200)
  6.         {
  7.             try
  8.             {
  9.                 alert("xml");
  10.                 var xml = objetoXHR.responseXML;
  11.                 alert("root");
  12.                 var root = xml.getElementsByTagName("resultado")[0];
  13.                 alert("elem");
  14.                 var elem = root.getElementsByTagName("mensaje")[0];
  15.                 alert("value");
  16.                 alert(elem.firstChild.nodeValue);
  17.             }
  18.             catch (error)
  19.             {
  20.                 alert(objetoXHR.responseText);
  21.             }
  22.         }
  23.         else
  24.             alert('ERROR: '+objetoXHR.status+'. Mensaje: '+objetoXHR.statusText+'\nError grave: el servidor no ha completado la peticion.\nIntentalo mas tarde o ponte en contacto con el administrador del juego.');
  25.     }
  26. }

Código PHP:
Ver original
  1. <?php
  2.     echo '<resultado><mensaje>ACA NO HAY CONSULTAS SQL</mensaje>';
  3.     echo '<status>OK</status></resultado>';
  4. ?>

Código de lo devuelto por responseText:
Ver original
  1. <resultado><mensaje>ACA NO HAY CONSULTAS SQL</mensaje><status>OK</status></resultado>

Como veras en el catch traigo el response en modo texto y me lo muestra sin problemas. Es decir como ya dije el problema esta en el responseXML.

Ahora luego de modificar mi php para que no tenga ninguna consulta (en realidad tambien probe una consulta valida... insertar otro usuario y ocurre exactamente los mismo)... te pregunto QUE CARAJO TIENE QUE VER LA CONSULTA MAN!!! No se por que me gasto en poner todo el codigo si ni siquiera cuando pongo la porcion puntual donde el codigo da error me lees lo que te pregunto... (¬¬) Y disculpa que me caliente, pero no encontrar un error me da por los huevos y para colmo consultarlo donde se supone que puede saber, no solo no me responden sino que el unico que responde lee al vuelo y dice lo primero que se le ocurrio me saca completamente de las casillas...

Repito por si no se entendio...
El alert("elem"); no se muestra, lo que quiere decir que el error esta antes. El alert("root"); si se muestra por lo que el error viene despues. Puntualmente el error ocurre en la linea:
var root = xml.getElementsByTagName("resultado")[0];

Pregunta:
POR QUE???
  #6 (permalink)  
Antiguo 24/07/2009, 08:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Respuesta: Problemita con el XMLHTTPREQUEST

Hola, Lhan.

Esa no es la mejor forma de pedir ayuda ni tampoco de agradecer a alguien que sólo trataba ayudarte.

En cuanto a tu problema, no estás enviando las cabeceras correctas desde PHP; debes enviar una cabecera Content-type: text/xml usando la función header() para que el navegador lo tome como XML.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 24/07/2009, 08:55
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Problemita con el XMLHTTPREQUEST

Tenes razon, por eso mismo le pedi disculpa por calentarme, pero es que se enrosco con la consulta y ya le habia dicho que ese no era el problema. Gracias por la respuesta, Efectivamente me falto lo del header. Nuevamente disculpen la calentura.
  #8 (permalink)  
Antiguo 24/07/2009, 12:45
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemita con el XMLHTTPREQUEST

Hola

Cita:
Iniciado por LhaN Ver Mensaje
Ahora luego de modificar mi php para que no tenga ninguna consulta (en realidad tambien probe una consulta valida... insertar otro usuario y ocurre exactamente los mismo)... te pregunto QUE CARAJO TIENE QUE VER LA CONSULTA MAN!!! No se por que me gasto en poner todo el codigo si ni siquiera cuando pongo la porcion puntual donde el codigo da error me lees lo que te pregunto... (¬¬) Y disculpa que me caliente, pero no encontrar un error me da por los huevos y para colmo consultarlo donde se supone que puede saber, no solo no me responden sino que el unico que responde lee al vuelo y dice lo primero que se le ocurrio me saca completamente de las casillas...

Repito por si no se entendio...
El alert("elem"); no se muestra, lo que quiere decir que el error esta antes. El alert("root"); si se muestra por lo que el error viene despues. Puntualmente el error ocurre en la linea:
var root = xml.getElementsByTagName("resultado")[0];

Pregunta:
POR QUE???
Perdona por no haber cometido nunca el error de no poner los encabezados correcto para leer xml. Y no saber que si no los usa puede darte ese error
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 24/07/2009, 13:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Problemita con el XMLHTTPREQUEST

Para todo hay una primera vez...
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 20:03.