我有一个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
。
非常感谢帮助。谢谢。
答案 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