0

我最近接到了一个部分完成的项目,而且我刚开始使用 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 的所有类似问题,但均无济于事。

我知道我可以把它变成一个由管道或其他东西分隔的字符串,但我想看看数组是否可以像这样发送。

谢谢!

4

3 回答 3

1

不确定这是否是唯一的问题,但是(我认为)您可能会混淆 JSON 数组和getall. 你应该在这里使用get,而不是getall

myArray = request.params.get('myArray')

如果我正确理解代码,getall则适用于您有多个具有相同名称的参数的情况,如http://example.com/get?foo=1&foo=2.

另一方面,您的myArray变量只是对数组的单个引用。

希望这会有所帮助(即使它不能解决您的问题)。

于 2013-07-06T05:33:25.933 回答
1

使用request.json

try:
    myInt = request.json['myInt']
    myArray = request.json['myArray']

(假设您的客户设置content-typeapplication/json。)

这是一个很好的例子

于 2013-07-06T05:39:47.533 回答
0
var myInt = 5;
var myArray = [0, 1, 2];
var data = {
    myInt: myInt,
    myArray: JSON.stringify(myArray)
};

JSON.stringify在 js 和瓶中使用json_loads()

myInt = request.params.get('myInt')
myArray =  json_loads(request.params.get('myArray'))
于 2018-04-12T14:38:48.230 回答