0

我有一个 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...内容还没有经过测试或改进,但如果可能的话,我希望 my 的最终结果是group_user_id最初存在于cidArray.

非常感谢您的帮助。谢谢你。

4

2 回答 2

4

所以,在无意识的辛劳和痛苦之后,我发现了如何解决这个问题:

代替

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

我需要:

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

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

希望这在某些时候对某人有所帮助。

于 2013-10-24T21:19:20.100 回答
0

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

于 2013-10-25T07:07:57.660 回答