使用Ajax接收复选框值

时间:2017-02-20 23:40:44

标签: jquery ajax django jinja2

我有以下复选框定义:

{% for member in team_profile %}
    <div class="checkbox">
        <label> <input type="checkbox" id="checkboxes" value="{{ member.user_id }}">{{ member.first_name }}</label>
    </div>
{% endfor %}

team_profile只包含一堆成员名称。所以我想得到value={{member.userid}}的东西。

所以对于我的jquery我有:

var myCheckboxes = new Array();
$("input:checked").each(function() {
    data['myCheckboxes[]'].push($(this).val());
});

$.ajax({
    type:'POST',
    url:'createEvent/',
    data:{
        name: name,
        myCheckboxes: myCheckboxes,
    }
});

所以我想收集所有值并将它们存储在一个名为myCheckboxes的数组中。但我收到错误data is not defined。还有其他办法吗?

谢谢, 安迪

编辑:

好的,我做了以下更改:

var myCheckboxes = new Array();
$("input:checked").each(function() {
    data['myCheckboxes[]'].push($(this).val());
});

$.ajax({
    type:'POST',
    url:'createEvent/',
    data:{
        name: name,
        myCheckboxes: myCheckboxes,
    }
});

和我的views.py

def createEvent(request):
    if request.method == "POST":
        member = request.POST.get('myCheckboxes')
        print(member)

但是当我打印出会员时,None会被输出。

1 个答案:

答案 0 :(得分:1)

一些建议......

首先,请避免使用重复的id="checkboxes"属性,例如使用name="checkboxes"

{% for member in team_profile %}
    <div class="checkbox">
        <label> <input type="checkbox" name="checkboxes" value="{{ member.user_id }}">{{ member.first_name }}</label>
    </div>
{% endfor %}

此外,将数据添加到数组的正确方法是使用myCheckboxes.push(...)

var myCheckboxes = new Array();
$("input:checked").each(function() {
    myCheckboxes.push($(this).val()); // changed this line
});

$.ajax({
    type:'POST',
    url:'createEvent/',
    data:{
        name: name,
        myCheckboxes: myCheckboxes,
    }
});

最后,按如下方式获取服务器上的值:

def createEvent(request):
    if request.method == "POST":
        member = request.POST.getlist('myCheckboxes[]')
        print(member)