2013-10-24 117 views
0

处理贴出的JS数组我有一个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); 
    } 
}); 

到哪些职位数据我在金字塔的处理程序。相关部件为:

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

什么内容类型是数据? POST仅适用于表单编码数据,而不适用于json –

+0

添加到cidArray的每个值都是一个数字。我的目标是将这个数组(一定数量的值)传递给我的python代码,这样每个数据都可以用于将来的操作等等。我的印象是这是发布数据的正确语法。如上所示,我还有一个名为groupName的字符串(它可以在Python代码中成功捕获,可以这么说)。这有帮助吗? – JohnZ

回答

4

所以,盲目的劳苦和痛苦之后,我发现如何解决这一问题:

而不是

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

我需要:

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

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

希望这可以帮助某些人。

+1

所以,如果我可以提供小费。如果您想查看您的网络应用程序如何收到数据,请查看您喜爱的浏览器的网络选项卡中的请求,或者始终可以记录请求。 str(请求)会给你所有的荣誉的全部http消息。 –

+0

这实际上是我最终找到这个答案,只要看看网络选项卡(虽然浪费了太多的时间)。但我没有意识到str(请求)。我一定会在未来使用它。感谢您的建议! – JohnZ

+0

是的,显然在生产中不这样做,但是当你需要它的时候它很方便:) –

0

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