Foros del Web » Programando para Internet » Javascript »

Retornar valor de una funcion AJAX

Estas en el tema de Retornar valor de una funcion AJAX en el foro de Javascript en Foros del Web. Buenas a todos: Tengo 2 funciones Javascript, una de las cuales ejecuta una sentencia SQL por medio de AJAX, el problema es que cuando quiero ...
  #1 (permalink)  
Antiguo 10/10/2016, 01:09
 
Fecha de Ingreso: abril-2016
Mensajes: 18
Antigüedad: 8 años, 6 meses
Puntos: 0
Información Retornar valor de una funcion AJAX

Buenas a todos:

Tengo 2 funciones Javascript, una de las cuales ejecuta una sentencia SQL por medio de AJAX, el problema es que cuando quiero retornar un valor obtenido hacia la funcion desde donde hago el llamado me sale el mensaje "undefined"

He visto que esto sucede por la Asincronia de la funcion AJAX, es decir que retorna "undefined" porque aun no se ha ejecutado. Tambien he visto que puedo solucionarlo cambiando el atributo de asincronia de "true" a "false".

Pero como puedo hacer para obtener el valor del return correcto sin necesidad de cambiar la Asincronia de la funcion AJAX?

Gracias!!!
  #2 (permalink)  
Antiguo 10/10/2016, 10:42
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 15 años, 1 mes
Puntos: 29
Respuesta: Retornar valor de una funcion AJAX

precisamente porque es asincrono , la respuesta a toda petición ajax la obtienes en el onreadystatechange, al evaluar el status == 200 y el readyState == 4.

el problema es que la gente usa AJAX y nunca estudia como funciona.
  #3 (permalink)  
Antiguo 10/10/2016, 16:47
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Retornar valor de una funcion AJAX

A la función que ejecuta la petición asíncrona, pásale como argumento una función que actúe como llamada de retorno, de tal modo que podrá procesar la respuesta en cuanto esté lista.
Código Javascript:
Ver original
  1. //Función AJAX
  2. function ajax(callback){
  3.     //Tus instrucciones
  4.     if (xhr.readyState == 4 && xhr.status == 200){
  5.         callback(xhr.responseText);
  6.     }
  7. }
  8.  
  9. //Llamada a la función
  10. ajax(function(respuesta){
  11.     //Puedes procesar la respuesta como gustes
  12. });

Una alternativa más moderna consiste en utilizar promesas.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 14/10/2016 a las 15:00 Razón: Faltó la llamada a la función

Etiquetas: ajax-php, php
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:17.