从字符串以外的Ajax调用获取数据

时间:2013-10-22 10:37:59

标签: jquery ajax json grails

我希望通过jquery的ajax调用从grails动作接收一些数据。
到现在我已经使用ajax调用只是为了接收一些字符串但现在我想要接收一些列表(许多列表)。
这是我的行动

def getSpecificData() {
        **some code here**
        render (list:[10,20,30,40],list2:[20,30,40]);
    }

我的jquery电话:

jQuery.ajax({
                    type: 'POST',
                    url: graphUrl,
                    data: "xaxis="+$(this).val(),
                    async: true,
                    success: function(response,textStatus){
                        console.log(response);

                     },
                    error:function(XMLHttpRequest,textStatus,errorThrown){}
                });

控制台日志为['list':[10, 20, 30, 40], 'list2':[20, 30, 40]] 它基本上只是一个字符串,但我想要两个列表作为响应,是否可能?
我希望那些list1和list2作为响应数据。有没有办法这样做?
我想我可以从列表中创建一个json(两个列表中有2个元素),然后将json字符串转换为数组。
但这看起来很乱,所以任何人都有更好的想法?

1 个答案:

答案 0 :(得分:1)

使服务器呈现一个列表为JSON的地图:

render ([list:[10,20,30,40],list2:[20,30,40]] as JSON)

您可能需要导入JSON转换器:

import grails.converters.JSON

然后让你的AJAX看起来像这样:

jQuery.ajax({
                type: 'POST',
                url: graphUrl,
                data: "xaxis="+$(this).val(),
                async: true,
                dataType: "",
                success: function(dataReceived,textStatus){
                    console.log('list:', dataReceived.list);
                    console.log('list2:', dataReceived.list2);
                 },
                error:function(XMLHttpRequest,textStatus,errorThrown){}
            });

您可能需要考虑使用简写jQuery.post(url, data, successCallback)