Аякс и Джанго - PullRequest
       2

Аякс и Джанго

0 голосов
/ 09 июня 2018

У меня есть jjery ajax-код, который выглядит следующим образом: он работает с кнопкой удаления и флажком.

$(".delete-row").click(function(){
                    $("table 
 tbody").find('input[name="record"]').each(function(){
                        if($(this).is(":checked")){
                                        var value = $('chk').val();
                        $(this).parents("tr").remove();
                                        $.ajax({
                                            url: "/delete/",
                                          //  type: "post", // or "get"
                                            data: value
                    });
                });
            });
            });

Этот вызов jquery должен удалить проверенную строку в таблице, и добавленный вызов ajaxвызовите представление django.

Я сомневаюсь, что я передаю значение флажка представлению django в приведенном выше вызове AJAX.В этом случае, как django view узнает, какую строку таблицы удалить, основываясь на значении флажка?

ниже, как моя таблица создается в цикле for

{% for x in dirs %}
                       <tr id='this_row' style="text-align: center;">
                                  <td>

                                            <input type="checkbox" id="chk" value="this_row" name="record"></td>


                          <td>
                              <a href="/contents?query_name={{ x|urlenchode }}" id="this_row1" style="text-decoration: none;">{{ x.name }}</a>
                          </td>
                                    <td>
                              {{ x.created_date }}
                          </td>
                                    <td>
                              {{ x.description }}
                          </td>
                       </tr>
                     {% endfor %}

нижекнопка удаления

<button type="submit" name="erase" class="delete-row">Delete Row</button>

1 Ответ

0 голосов
/ 09 июня 2018

Просто добавьте id строки как атрибут value к флажку, чтобы ваш ajax отправил список идентификаторов.Вместо this_row добавьте {{x.id}} идентификатор экземпляра

{% for x in dirs %}
    <tr id='tr-{{x.id}}' style="text-align: center;">
        <td><input type="checkbox" id="chk-{{x.id}}" value="{{x.id}}" name="record"></td>
       <td>
       <a href="/contents?query_name={{ x|urlenchode }}" id="link-{{x.id}}" style="text-decoration: none;">{{ x.name }}</a></td>
       <td>{{ x.created_date }}</td>
       <td>{{ x.description }}</td>
    </tr>
{% endfor %}

И в вашем ajax вы получите к нему доступ с помощью

// send this array via ajax
$(".delete-row").click(function(){
   <b>var id_list = new Array();</b>

   $("input[name=record]:checked").each(function(){
       <b>id_lists.push($(this).val());</b> 
       $(this).parent("tr").remove(); // Remove the row,
       // the correct is parent() without 's', not parents()
   });

   // with type:'post', don't forget the csrf_token
   $.ajax({
       url: "/delete/",
       type: "post",
       data: {
          id_list:id_list,
          <b>csrfmiddlewaretoken:"{{ csrf_token }}"</b>
       },
   });
});

И, по вашему мнению, вы можете получитьid_list содержит все выбранные строки с reqest.POST.getlist('id_list[]').В случае, если это был запрос GET reqest.GET.getlist('id_list[]')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...