2012-06-13 51 views
0

我試圖發送我的序列化表單數據到Django它應該存儲在「mylist」列表「[視頻,音頻]」。無論我在表單上檢查什麼框,views.py都會返回0。django getlist()from ajax html form

HTML表單

<form id="myform" method="POST"> 
<input type="checkbox" name="list" value="audio"/> Audio<br /> 
<input type="checkbox" name="list" value="video"/> Video<br /> 
<input type="submit" value="Get Custom Library!" /> 
</form> 

jQuery的AJAX

<script language="JavaScript"> 
$(document).ready(function() { 
$("#myform").submit(function() { 

     $.ajax({ 
     type: "POST", 
     url: 'django/builder/buildit', 
     data: $(this).serialize(), 
     success: function(response){ 
      alert(response); 
     } 
    }); 
    return false; 
}); 
}); 
</script> 

views.py

from django.http import HttpResponse 
def main(request): 
    mylist = request.POST.getlist('list') 
    message = 0 
    for item in mylist: 
    if item == 'video': 
     message = 'vid' 
    elif item == 'audio': 
     message = 'aud' 
    return HttpResponse(message) 
+0

'數據:{列表:myCheckboxes}' –

+0

嘗試插入'打印(項目)'在views.py找出其實際價值? – Junuxx

+1

爲什麼不使用'mylist'中的'if'視頻而不是循環? – VisioN

回答

1

你不給一個鍵值對的data說法,但你不應該」甚至不得不走得那麼遠 - 你不必自己收集複選框的值。使用serialize

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

    $.ajax({ 
     type: "POST", 
     url: 'django/builder/buildit', 
     data: myCheckboxes, 
     success: function(response){ 
      alert(response); 
     } 
    }); 

有了這個,:您可以更換該

$.ajax({ 
     type: "POST", 
     url: 'django/builder/buildit', 
     data: $('#myform').serialize(), 
     success: function(response){ 
      alert(response); 
     } 
    }); 
+0

如何將序列化數據作爲django中的「mylist」變量存儲,看起來像這樣[視頻,音頻] – user1442957

+0

@ user1442957您在視圖中的內容應該與上面的代碼一起使用。 –

+0

我編輯了我的主帖,現在views.py只是不管檢查什麼都返回'0'。我不認爲我的數據作爲列表存儲在「mylist」中。 – user1442957