【问题标题】:getting empty dictionary on POST ajax在 POST ajax 上获取空字典
【发布时间】:2021-11-18 09:18:35
【问题描述】:

当用户单击删除图标时,我试图删除数据库中的一些元素,但是当我通过 POST 请求发送 id 时,我得到 empty dictionary, p>

{% for skills in seeker_skills %}
           <div class="col-md-4">
            <button class="btn btn-info mx-2">{{skills.skill_name}}<span class="badge badge-dark ">{{skills.skill_level}}</span></button><span><i class="fas fa-trash-alt delete_skill" data-attr={{skills.id}} style="cursor: pointer;"></i></span>
           </div>
           {% endfor %}

更新了 sn-p,我在点击时调用它 Ajax 代码

let delete_class_list = $('.delete_skill')
delete_class_list.click(function(e){
    let value = this.getAttribute("data-attr")
    let contain_icon = this
    let contain_label = contain_icon.parentElement.previousSibling
    console.log(contain_label)
    $.ajax({
        url:'/delete_skill/',
        method : 'POST',
        data: {
            skill_id:value
        },
        dataType: "json",
        contentType: "application/json",
        success :function(data){
            console.log(data)
            contain_label.remove()
            contain_icon.remove()   
        }
        ,
        error:function(e){
            console.log(e)

        }
    })
})

我的看法

@csrf_exempt
def delete_skill(request):
    if request.method == 'POST':
        data = {}
        print('method is post')
        job_id = request.POST.get('skill_id')
        print(job_id)
        try:
            Job_Skillset.objects.get(id=job_id).delete()
            data['status'] = 'deleted'
        except ObjectDoesNotExist:
            data['status'] = 'nodata'
        return JsonResponse(data,safe=False)

【问题讨论】:

  • 您的后端控制台中有job_id 的值吗?
  • @Rvector 显示None
  • 你在点击时调用这个吗?
  • 是的@amadousow on click 事件处理程序我由代码更新
  • 如果job_idNone那么request.POST.get('skill_id')None,数据没有按预期发送

标签: django ajax django-views


【解决方案1】:

您将内容类型设置为 application/json 不正确,请将其删除。

$.ajax({
    url:'/delete_skill/',
    method : 'POST',
    data: {
        skill_id:value
    },
    dataType: "json",
    success :function(data){
        console.log(data)
        contain_label.remove()
        contain_icon.remove()   
    }
    ,
    error:function(e){
        console.log(e)

    }
})

【讨论】:

  • 我仍然收到None [26/Sep/2021 22:08:27] "GET /favicon.ico HTTP/1.1" 404 7459 None
  • 这不是同一个请求。它是大多数浏览器发出的 favicon 请求。请求是 POST 并且是 /delete_skill/
  • 我也将相同的逻辑应用于不同的视图,通过POST 发送相同的数据,但我的 HTML 片段没有任何问题,
  • 谢谢,我无法理解,但您的回答和stackoverflow.com/questions/25791913/… 都帮助了我
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 2021-12-09
相关资源
最近更新 更多