Página 1 de 1

Error de consulta en Ajax

NotaPublicado: 2008-04-23 13:09 @590
por zozo666
Buenas tardes perleros, necesito saber si saben cómo solucionarme esta cuestión. Corro una función Ajax en el HTML, que realiza una consulta y me devuelve dos valores. Luego, con esos valores, uno lo listo en un div y el otro lo pongo en un hidden. Hasta ahí, perfecto; el problema empieza cuando a veces la función Ajax al hacer la consulta me devuelve lo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
  2.  
  3. <html><head> 
  4.  
  5. <title>500 Internal Server Error</title> 
  6.  
  7. </head><body> 
  8.  
  9. <h1>Internal Server Error</h1> 
  10.  
  11. <p>The server encountered an internal error or 
  12.  
  13. misconfiguration and was unable to complete 
  14.  
  15. your request.</p> 
  16.  
  17. <p>Please contact the server administrator, 
  18.  
  19. root@localhost and inform them of the time the error occurred, 
  20.  
  21. and anything you might have done that may have 
  22.  
  23. caused the error.</p> 
  24.  
  25. <p>More information about this error may be available 
  26.  
  27. in the server error log.</p> 
  28.  
  29. <hr> 
  30.  
  31. <address>Apache/2.0.52 (servidor) Server at direccion Port 80</address> 
  32.  
  33. </body></html> 


Sé que este problema es porque el servidor funciona mal o la consulta no se realiza adecuadamente. Acá el problema está en el servidor que está funcionando mal, porque en la consulta hay momentos que me la hace sin problemas y funciona ok, y otros momentos que no, pero más allá del problema. Lo que quiero saber es cómo hacer para que lo que me devuelva no sea ese error, sino algo que lo defina yo.

O sea, en el return(valor1,valor2) si alguno de estos valores tiene problema que cuando se reciban en el HTML (yo estoy usando un callback) y la función JavaScript que lo reciba se de cuenta del error y me avise, por ejemplo, mediante un alert que se produjo un error en la consulta.

¿De qué manera hago esto?

Muchas gracias desde ya. Adiós

NotaPublicado: 2008-04-23 13:39 @610
por explorer
Mira antes los logs del servidor web, para ver exactamente el mensaje de error que el servidor web ha encontrado.

Luego, en el lado del servidor, puedes hacer que la consulta sea dentro de un eval { }, con lo que el proceso no terminará de forma brusca. Si después de la consulta, la analizas, y ves que ha ocurrido un error, entonces preparas la respuesta Ajax con un mensaje de error para que lo vea el usuario en lugar del resultado esperado. Se le puede indicar que lo intente pasados unos minutos/segundos o darle alguna alternativa más.

Por otra parte, del lado del cliente, también puedes editar el callback. Puedes mirar el código devuelto antes de asignarlo al <div>, y si es un error, redireccionar la página, volver a hacer la petición, cambiar el mensaje, etc. etc. En JavaScript hay funciones para hacer búsquedas de patrones, con lo que puedes saber el contenido de la respuesta, antes de presentarla.

NotaPublicado: 2008-04-23 15:18 @679
por zozo666
Muchas gracias. Implementé lo que me dijistes, funciona bien. Muchas gracias.