Qué pasa en el controlador para una solicitud de obtención de AJAX en GRAILS

Tengo una llamada AJAX en mi vista,

var ajaxData= $.ajax({
type: "GET",
url: "${createLink(controller:'profile',action:'ajaxList')}",
success: function(data) {
    }  
});

Creé un método en la clase ProfileController.groovy para devolver "datos" de esta llamada, pero no sé cómo formatear el controlador correctamente. Esto es lo que quiero devolver. El modelo, perfil, tiene un nombre y una descripción. Quiero devolver un objeto hash donde la clave es el nombre y el valor es la descripción. ¿Hay alguna manera de hacer esto en el controlador para que esta llamada ajax devuelva ese hash? Cualquier ayuda sería apreciada. ¡Gracias!

preguntado el 11 de junio de 12 a las 19:06

1 Respuestas

En tu controlador ajaxList acción, construya su modelo como lo desee, como de costumbre, y luego, en lugar de return model al final quieres render model as JSON.

Por ejemplo, los servicios administrativos de

class ProfileController {
    def ajaxList() {
        def profiles = Profile.list()
        def model = profiles.collect { [(it.name): it.description] }
        render model as JSON
    }
}

Y si quieres usar el mismo list acción para devolver diferentes formatos, mire usando withFormat.

Respondido el 11 de junio de 12 a las 20:06

Realmente nunca he hecho controladores personalizados, solo he usado generaciones. ¿Crees que puedes dar un pequeño ejemplo de código de cómo se vería en este caso? - daniel langer

gracias por la actualización, eso tiene sentido. Sin embargo, ¿de dónde vienen los datos entonces? AKA no hay consulta a la base de datos para obtener perfiles en este caso? - daniel langer

Actualicé el ejemplo para adivinar la clase y los requisitos de su dominio. - Doelleri

Entonces, ¿mi código de arriba ahora debería establecer ajaxdata = un mapa del par de descripción de nombre? - daniel langer

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.