Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Función que retorna el contenido Ajax

Estas en el tema de Función que retorna el contenido Ajax en el foro de Jquery en Foros del Web. Hola, compañeros: Tengo un problema para devolver datos desde Ajax a través de una función, no sé como hacerlo. Por ejemplo: Código: var datos = ...
  #1 (permalink)  
Antiguo 27/03/2015, 15:26
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Pregunta Función que retorna el contenido Ajax

Hola, compañeros:

Tengo un problema para devolver datos desde Ajax a través de una función, no sé como hacerlo. Por ejemplo:

Código:
var datos = function() {
 $.ajax({
	url: base_url + 'buscar/hot_tipos_entrega',
	dataType: 'json',
 }).done(function (respuesta) {
	//¿Qué código va aquí para que "datos" devuelva "respuesta"?
 });
};
Cada vez que llamo a la función "datos" quiero que me devuelva el contenido que obtengo en "respuesta". Sé que Ajax es asíncrono y es probable que la función haya terminado antes que Ajax haya obtenido la respuesta, pero me interesa que la función retorne la respuesta. ¿Cómo lo haría?

Espero que mi duda esté clara.

Gracias por adelantado por la ayuda. Saludos.
  #2 (permalink)  
Antiguo 27/03/2015, 15:32
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Función que retorna el contenido Ajax

Puedes hacerlo de forma sincrónica, pero lo más adecuado sería utilizar una función de callback para manejar los datos:

Código Javascript:
Ver original
  1. function callback(data){
  2.   // alert(data);
  3. }
  4.  
  5. $.ajax({
  6.     url: base_url + 'buscar/hot_tipos_entrega',
  7.     dataType: 'json',
  8. }).done(function (respuesta) {
  9.     callback(respuesta);
  10. });
  #3 (permalink)  
Antiguo 27/03/2015, 15:41
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: Función que retorna el contenido Ajax

Pero en tu ejemplo, ¿cómo asigno la respuesta a una variable?

var mi_variable = datos();

De esta forma quiero que "mi_variable" guarde el contenido en "respuesta".

Saludos.
  #4 (permalink)  
Antiguo 27/03/2015, 15:43
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Función que retorna el contenido Ajax

Coloca la llamada al método Ajax dentro de una función, ejecútala y, como puedes ver, cuando se reciba una respuesta, esta será enviada como parámetro a otra función que hará con ella lo que desees, ya sea asignarla a algún elemento del DOM, imprimirla o lo que quieras.

Saludos
__________________
«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
  #5 (permalink)  
Antiguo 27/03/2015, 17:47
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: Función que retorna el contenido Ajax

Ya, pero yo quiero que la función devuelva la respuesta que obtuvo de Ajax. No quiero que la función que se pasa como argumento al "done" coloque la respuesta en un elemento DOM, bla bla bla, etc. Yo quiero que la función donde se está ejecutando el método Ajax devuelva lo que Ajax obtuvo. ¿Es posible?
  #6 (permalink)  
Antiguo 27/03/2015, 17:51
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Función que retorna el contenido Ajax

Es posible de la forma en la que te hemos explicado.

A buen entendedor...
__________________
«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
  #7 (permalink)  
Antiguo 27/03/2015, 18:25
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: Función que retorna el contenido Ajax

He entendido lo de configurarlo como sincrónico. La segunda forma no lo comprendí, no me queda clara. Gracias de todos modos. Saludos.

Para quienes estén buscando alguna solución, bastaría con algo como esto:

var datos = function() {
var retorno; //En este momento retorno es undefined
$.ajax({
url: base_url + 'buscar/hot_tipos_entrega',
dataType: 'json',
async: false //La función continúa cuando Ajax completó la petición
}).done(function (respuesta) {
retorno = respuesta //Ahora retorno contiene un valor
});
return retorno; //Se devuelve lo obtenido por Ajax.
};

Etiquetas: ajax, contenido, javascript, js, retorna
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 16:11.