Foros del Web » Programando para Internet » Jquery »

Función que devuelve un array, con AJAX y jQuery

Estas en el tema de Función que devuelve un array, con AJAX y jQuery en el foro de Jquery en Foros del Web. Hola a todos. Una vez más acudo a este foro para intentar dar solución a un problema que me tiene loco. Mi caso es el ...
  #1 (permalink)  
Antiguo 26/02/2010, 06:32
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Función que devuelve un array, con AJAX y jQuery

Hola a todos. Una vez más acudo a este foro para intentar dar solución a un problema que me tiene loco. Mi caso es el siguiente.

Necesito hacer una función que obtenga mediante AJAX una lista de asignaturas en una base de datos. Para ello uso jQuery. Hasta ahí bien. Obtengo un objeto en JSON. El problema viene a la hora de "extraer" ese objeto, y hacer que la función lo devuelva. ...creo que no me explico muy bien, mejor pongo código.

Esta es la función que debería devolver un array con la lista de asignaturas:
Código Javascript:
Ver original
  1. function get_asignaturas(){
  2.         var respuesta = new Array();
  3.        
  4.         // Petición AJAX al servidor
  5.         $.ajax({
  6.             url: '../php/seleccion.php?f=asignaturas&nocache='+Math.random(),
  7.             type:'GET',
  8.             dataType: 'json',
  9.             // Si la respuesta es exitosa:
  10.             success: function(json){
  11.                 //el script php devuelve algo como {"array": ["Inglés", "Francés"]}
  12.                 respuesta = json.array;
  13.             }
  14.         }); // end $.ajax
  15.        
  16.         return respuesta;
  17.     }

pero la función me devuelve el array 'respuesta' vacío, como si la parte de "respuesta = json.array;" no hiciese nada. Pero 'json.array' no está vacío, porque si pongo "alert(json.array) en la función 'success', me muestra correctamente el array ["Inglés", "Francés"]

¿Se entiende ahora? Lo que quiero es que la función devuelva el array ["Inglés", "Francés"].
¿Alguna idea de por qué no funciona tal como lo estoy haciendo?
Un saludo
  #2 (permalink)  
Antiguo 28/02/2010, 20:09
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: Función que devuelve un array, con AJAX y jQuery

WAHAHAHA
PRECE QUE ERES PRINCIPIANTE.

no estas usando json pa' nada

lo que haces es colocarle el nombre json a la cadena que debuelve la consulta ajax, lo que puedes hacer es un areglo a lo principiante, como es esto¿? pues asi:
(aunque no se debe, se puede).

Código Javascript:
Ver original
  1. function get_asignaturas(){
  2. var rand=Math.random();
  3.  $.get("../php/seleccion.php", { f: "asignaturas", nocache: rand },
  4.    function(datos){
  5.      var respuesta=datos.split(",");
  6.    });
  7.     return respuesta;
  8.     }

esto funciona si el resultado de seleccion.php fuese: Inglés,Francés,Aleman,español

espero te sirba de algo.

explicacion:

mandas las variables y retornas una cadena y su separador es una coma luego tomas con javascrpt la cadena y le transformas en un arreglo (esa es la funcion de split).

  #3 (permalink)  
Antiguo 28/02/2010, 20:40
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Función que devuelve un array, con AJAX y jQuery

¿Tanto se nota que soy nuevo en esto? :P
Mañana le echo un ojo a tu código, que hoy no ando muy... centrado.
¡Muchas gracias!
  #4 (permalink)  
Antiguo 01/03/2010, 08:37
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Función que devuelve un array, con AJAX y jQuery

He probado el código, y primer error.
ReferenceError: respuesta is not defined

Con él, creo que ya he descubierto en qué fallaba mi código. El problema está en que la función devuelve el valor de 'respuesta' antes de recibir la respuesta del servidor.

En mi código, yo declaraba la variable 'respuesta' al principio, en el tuyo lo haces en la función de callback; por eso el mío devuelve la variable vacía y el tuyo el error.

De momento lo he arreglado haciendo la petición síncrona -¿existe esta palabra? :P- , habrá que ver si por culpa de esto al aplicación se vuelve algo tosca.
Gracias una vez más por la ayuda.
Si a alguien se le ocurre algo más... estoy abierto.

PD: {"array": ["Inglés", "Francés"]}, ¿no es notación JSON? Porque es lo que yo tenía entendido...

Etiquetas: ajax
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 00:34.