我正在尝试发布复选框的值,但无法这样做。它首先收集一个数组中的所有复选框(datas
- 在使用console.log(datas)
进行测试后工作正常),然后集体发送它们。但是我无法发布数据。我得到一个空数组。我哪里错了?
views.py
if request.method == 'POST':
selected_users = request.POST.getlist('users[]')
return HttpResponse(selected_users)
的jQuery
$(document).ready(function(){
$('#submit').click(function() {
var datas = new Array();
var i = 0;
$("input[type=checkbox]:checked").each(function() {
datas[i] = $(this).val();
i++;
});
console.log(datas) //works fine
$.post("get_data/", {'users[]': datas}, function(data){
alert(data);
});
});
})
urls.py
urlpatterns = patterns('',
url(r'get_data/','apps.api.views.get_data', name = 'grabhalo_get_data'),
)
复选框
{% for user in users %}
<input type="checkbox" class="check" value="{{user.id}}" />{{user.name}}<br>
{%endfor%}
<form id="form" method="POST" action="#">
{% csrf_token %}
<input type="text" class="span8 search-query" placeholder="Type here..." name="chat">
<input type="submit" value="Send" class = "btn btn-primary" id = "submit">
</form>
以下是查看 console.log
时的参数users[] 1
users[] 2
我猜想views.py中有一些错误,但不确定。请帮我纠正一下。
答案 0 :(得分:0)
<强> 1。缺少防止默认
取代:
$('#submit').click(function() {
使用:
$('#submit').click(function(e) {
e.preventDefault();
<强> 2。缺少复选框的名称
<input type="checkbox" name="..."
答案 1 :(得分:0)
通过轻微的代码重新排列,您可以轻松获得正在尝试的内容
<form id="form" method="POST" action="#">
{% for user in users %}
<input type="checkbox" class="check" name='users' value="{{user.id}}" />{{user.name}}<br>
{% endfor %}
{% csrf_token %}
<input type="text" class="span8 search-query" placeholder="Type here..." name="chat">
<input type="submit" value="Send" class = "btn btn-primary" id = "submit">
</form>
$(document).ready(function(){
$('#form').submit(function(evt) {
evt.preventDefault();
$.post("get_data/", $(this).serialize(), function(data){
alert(data);
});
});
})
请参阅docs on jQuery.serialize()
,特别注意
注意:只有“成功控件”被序列化为字符串。没有 由于表单未提交,因此提交按钮值已序列化 使用按钮。对于要包含在表单元素中的值 序列化字符串,该元素必须具有name属性。价值来自 复选框和单选按钮(“radio”或“checkbox”类型的输入) 仅在检查时才包括在内。来自文件选择元素的数据 没有序列化。
if request.method == 'POST':
selected_users = request.POST.getlist('users')
return HttpResponse(selected_users)