我最近交了一个部分完成的项目,我刚开始使用Bottle。我有一种情况,我在AJAX请求中发送字典,而Bottle在服务器端。字典看起来像这样(在JavaScript中):
var myInt = 5;
var myArray = [0, 1, 2];
var data = {
myInt: myInt,
myArray: myArray
};
然后,在Python中,我想读入这些数据。我似乎无法获得阵列。我可以得到int就好了。我已经尝试了几件事,但这里对我来说最有意义的是仍然无效:
try:
myInt = int(request.forms.get('myInt'))
myArray = request.forms.getall('myArray')
这会导致myArray的空列表。谁能指出我正确的方向?我在StackOverflow上读过每个类似的问题都无济于事。
我知道我可以将它变成一个由管道或其他东西分隔的字符串,但我想看看数组是否可以像这样发送。
谢谢!
答案 0 :(得分:1)
不确定这是否是唯一的问题,但(我认为)您可能会混淆JSON数组和使用getall
。您应该使用get
,而不是getall
,在这里:
myArray = request.params.get('myArray')
如果我正确理解了代码,getall
适用于多个具有相同名称的args,如http://example.com/get?foo=1&foo=2
。
另一方面,您的myArray
变量只是对数组的单个引用。
希望这会有所帮助(即使它无法解决您的问题)。
答案 1 :(得分:1)
使用request.json
:
try:
myInt = request.json['myInt']
myArray = request.json['myArray']
(假设您的客户正在将content-type
设置为application/json
。)
这是一个不错的example。
答案 2 :(得分:0)
var myInt = 5;
var myArray = [0, 1, 2];
var data = {
myInt: myInt,
myArray: JSON.stringify(myArray)
};
在js和瓶JSON.stringify
中使用json_loads()
:
myInt = request.params.get('myInt')
myArray = json_loads(request.params.get('myArray'))