0

チェックボックスの値を投稿しようとしていますが、投稿できません。最初にすべてのチェックボックスを配列に収集し( - functionselected_usersでテストすると正常に動作しalertます)、次にそれらをまとめて送信します。しかし、私はデータを投稿することができません。私が得るエラーは、Key 'users' not found in です。どこが間違っているのですか?jQuery プラグインで POST ステートメントを変更するにはどうすればよいですか?

View.py

def get_data(リクエスト):

if request.method == 'POST': 
    selected_users = request.POST['users']
return HttpResponse(selected_users)

urls.py

urlpatterns = patterns('',
    url(r'get_data/','apps.api.views.get_data', name = 'grabhalo_get_data'),
)

jQuery

$(document).ready(function(){
                $('#submit').click(function() {
                  var selected_users = $('input[type=checkbox]:checked').map(function(_, el) {
                    return $(el).val();
                    }).get();
                    alert(selected_users);     // works fine
                    $.post("get_data/",{users:selected_users});   // not able to post
                });    
            })

チェックボックス

{% for user in users %}
    <input type="checkbox" class="check" value="{{user.id}}" />{{user.name}}<br>    
{%endfor%}

    <form id="form" method="POST" action="/get_data/">
       {% 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>

誰かが .post 関数を再定義できる場合は、さまざまな提案を歓迎します。

ありがとう

4

4 に答える 4

1

JQuery $.post 関数は問題ありません。問題は Django ビューで値を取得することです。値の配列を投稿しています - それらを取得するにはgetlist()、POST QueryDict の関数を使用します。したがって、ビューは次のようになります。

if request.method == 'POST':
    selected_users = request.POST.getlist('users[]')
    return HttpResponse(selected_users)

参照してください:

QueryDict.getlist(キー、デフォルト)

ジャンゴ - getlist()

于 2013-08-04T14:05:03.767 に答える
0

次のように POST を試してみませんか。

$(document).ready(function(){
  $('#submit').click(function() {
      var selected_users=[];
      var $inputs = $('.check');
      $inputs.each(function() {         
            selected_users.push( $(this).val());        
        });            
                    alert(selected_users);     // works fine
      $.post("get_data/",{"users" : selected_users},function(response) 
        {
            alert(response);
        });     
            })

あなたの view.py でこれを試してください:

if request.method == 'POST': 
selected_users = request.POST.get("selected_users", "")
return HttpResponse(selected_users)
于 2013-08-04T14:04:23.910 に答える