如何在Pyramid中处理POSTed JS数组

时间:2013-10-24 18:10:53

标签: javascript jquery python pyramid

我有一个AJAX请求:

var groupName = $('#group-input').val();
var cidArray = [];

$("#sortWrapper .contact-wrapper").children('.is-checked').each(function() {
        cidArray.push($(this).attr('cid'));
});

$.ajax({     
    type: "POST",
    url: "/ajax/create/",
    data: {group_name: groupName, group_user_id: cidArray},
    cache: false,
    success: function(result) {
        alert(groupName); // These both alert the proper values
        alert(cidArray);
    }
});

将数据发布到Pyramid中的处理程序。相关部分是:

group_name = request.POST.get('group_name', None)
group_user_id = request.POST.getall('group_user_id')

for index,uid in enumerate(group_user_id):
    # perform actions on each user...
    print uid

我按预期收到group_name;但是,我也遇到麻烦,然后接收从JS数组cidArray发布的值。数组按预期填充,但是当我需要使用group_user_id的键检索这些值时会出现问题。

我似乎只能使用上面的空列表[]或使用不同的语法:

request.POST.get('group_user_id', [])

默认为该空列表。

注意:毋庸置疑,前面的for uid in...尚未经过测试或改进,但如果可能,我希望我的group_user_id的最终结果最初是这些值的列表出现在cidArray

非常感谢帮助。谢谢。

2 个答案:

答案 0 :(得分:4)

所以,在盲目劳累和痛苦之后,我发现了如何解决这个问题:

而不是

request.POST.getall('group_user_id') # This is wrong

我需要:

request.POST.getall('group_user_id[]') # This works

getall检索一个密钥下的所有值,[]处理它是一个数组的事实。其他一切都保持不变。

希望这在某些方面对某人有所帮助。

答案 1 :(得分:0)

this会有帮助吗?它使用 req.json_body