我正在通过带有Play Framework后端的jQuery通过Ajax发送值数组,而我遇到了问题。
这是一个例子:
$.ajax ({ 'type': 'POST', 'url': '/url', 'timeout': 5000, 'data': {'ids': [0, 1, 2, 3]}, 'dataType': 'json', 'success': function (oData) { // Process ... } });
但是在Play!中,如果我执行params.get("ids");,我将得到一个空值,如果我也执行了一个params.getAll("ids");。
params.get("ids");
params.getAll("ids");
我知道问题出在哪里,jQuery将数据发送为:ids[]=0&ids[]=1&ids[]=2&ids[]=3 但是播放!框架期望将数组数据发送为ids=0&ids=1&ids=2&ids=3
ids[]=0&ids[]=1&ids[]=2&ids[]=3
ids=0&ids=1&ids=2&ids=3
是否有适当的方法正确发送数据(或在控制器中将数据作为数组获取)?
到目前为止,我设法使其简单地起作用,但是在javascript中手动将请求创建为String。
谢谢你的帮助。
一种方法(使您的JavaScript代码保持完整)只是声明您的控制器方法,如下所示:
public static void myMethod(@As("ids[]:")List<Long> ids) { System.out.println(ids.get(0)); }
..输出是您期望的:
[0, 1, 2, 3]