我希望通过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字符串转换为数组。
但这看起来很乱,所以任何人都有更好的想法?
答案 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)。