我有以下jQuery调用(我无法改变):
$.ajax({ url: "http://localhost/lookup-coord",
jsonp: 'cb',
dataType: 'jsonp',
data: {'coord' : [[1,1],[1,2],[1,3]]},
success: function(response) {
console.log("Got the response: " + response);
}
});
我的Web应用程序收到以下查询字符串:
coord[0][]=1&coord[0][]=1&coord[1][]=1&coord[1][]=2&coord[2][]=1&coord[2][]=3
我想知道如何将该查询字符串解析为Scala Play中的数组。是否有开箱即用的方式来做到这一点?
答案 0 :(得分:0)
转换为数组
scala> val str = "coord[0][]=1&coord[0][]=1&coord[1][]=1&coord[1][]=2&coord[2][]=1&coord[2][]=3"
str: String = coord[0][]=1&coord[0][]=1&coord[1][]=1&coord[1][]=2&coord[2][]=1&coord[2][]=3
scala> val it = str.split("&").map(x => x.split("=")(1)).grouped(2)
it: Iterator[Array[String]] = non-empty iterator
scala> it.map(array => array.mkString("[",",","]")).mkString("[",",","]")
res0: String = [[1,1],[1,2],[1,3]]
或者:
scala> str.split("&").map(x => x.split("=")(1)).grouped(2).toList
res2: List[Array[String]] = List(Array(1, 1), Array(1, 2), Array(1, 3))
答案 1 :(得分:0)
根据我的理解,您希望查询字符串如下:
http://localhost/lookup-coord/[[1,1],[1,2],[1,3]
一种简单的方法是使用 JSON.stringify()
var arr = [[1,1],[1,2],[1,3]];
$.ajax({ url: "http://localhost/lookup-coord",
jsonp: 'cb',
dataType: 'jsonp',
data: {'coord' : JSON.stringify(arr)},
success: function(response) {
console.log("Got the response: " + response);
}
});
您可以使用以下链接作为参考:MDN - JSON.stringify
答案 2 :(得分:-1)
如果要将数组发送到给定文件(在这种情况下为http://localhost/lookup-coord
)
可能最好的想法就是如下:
// create empty array
var values = [];
// push the values
values.push(1);
values.push(2);
// when sending a parameter as an array we have to add [] after the name of the variable
我们要发送并使用单引号包装变量名称 例如(在这种情况下)
$.post('file.php',{'var[]',values,another-var:val2},function(data){
console.log('this is the retrieved data from the target file');
});
规则很简单
如果你使用jquery http request($.ajax,$.post,$.get)
然后
如果变量是一个数组,那么这样做
'var-name[]':values
其他
var-name:single-value