当我发出带有复选框的ajax删除请求时,视图功能中发生错误

时间:2019-05-31 21:42:40

标签: jquery ajax django view

当我通过复选框发出Ajax删除请求

视图功能发生错误。

我不知道为什么。

谢谢,如果你让我知道。

错误:

Traceback (most recent call last):
  File "C:\django_inflearn2\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\django_inflearn2\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\django_inflearn2\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\django_inflearn2\todo\views.py", line 23, in todo_delete_ajax
    todo_ids = request.POST['todo_arr']
  File "C:\django_inflearn2\venv\lib\site-packages\django\utils\datastructures.py", line 80, in __getitem__
    raise MultiValueDictKeyError(key)
django.utils.datastructures.MultiValueDictKeyError: 'todo_arr'

代码在

下方

jquery,ajax

$('#todo_delete_button').click(function(e){
    e.preventDefault();
    // todo_check
    var todo_arr = [];
    alert("삭제 버튼 ")
    // Get checked checkboxes
    $('.td_check').each(function() {
        if (jQuery(this).is(":checked")) {
            var id = this.id;
            todo_arr.push(id);
        }
    });
    alert('todo_arr : '+ todo_arr)

    $.ajax({
      type: "POST",
      url: 'todo_delete_ajax/',
      data: {
          todo_arr:todo_arr,
          csrfmiddlewaretoken: '{{ csrf_token }}'
      },
        success: function(result) {
            alert('todo_delete_ajax is success ');
        }
    });
})

url

    path('status/',views.todo_status_list, name ="todo_status_list"),

查看

def todo_delete_ajax(request):
    # print("request " , request )
    todo_ids = request.POST['todo_arr']
    print("todo_ids : ", todo_ids)

    return redirect('/todo/')

jQuery ajax的格式错误吗?

网址格式错误吗?

参数值设置不正确吗?

视图功能是否错误?

谢谢您能告诉我如何解决它。

1 个答案:

答案 0 :(得分:1)

“数据”是一个字典,“ todo_arr”是多值的。您可能必须执行JSON.stringify()才能使其正常工作。