2017-02-20 3 views
2

У меня есть следующие определения: CheckBoxПриемные значения Чекбокс Использование Ajax

{% 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. Есть ли другой способ сделать это?

Спасибо, Энди

EDIT:

Хорошо, я сделал следующие изменения:

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

Пара предложений ...

С одной стороны, избежать использования дублируют 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) 
+0

Я получаю MultiValueDictKeyError: «myCheckboxes». Это потому, что есть много идентификаторов, которые одинаковы? – anderish

+0

Я изменил его на member = request.POST.get ('myCheckboxes'), но он возвращает None – anderish

+1

Возможно, вам потребуется использовать 'request.POST.getlist ('myCheckboxes []')' - http: // stackoverflow. com/questions/4359238/how-do-i-get-multiple-values-from-checkboxes-in-django - что касается атрибутов «id =» флажков «id =», вы должны изменить это на флажки «name =» «'. – dana