chan

朝生暮死不足笑 但悲百年不足道

【Debug】AJAX 请求的数据格式问题


问题描述:表单数据明明有数据,会有错误提示没有输入数据,且后台接口无法获取到对应的数据

前端JS代码如下

    <script>
        $(function (){
            $('#btnAdd').click(function (){
                $('#addModal').modal('show');
            });

            $('#btnAddSubmit').click(function (){

                var data = $('#addForm').serialize();
                $.ajax({
                    url:"{% url 'customer_charge_add' pk=pk %}",
                    type:'POST',
                    data: $("#addForm").serialize(),
                    headers:{
                      'X-CSRFTOKEN':getCookie('csrftoken'),
                        
                    },
                    dataType: 'JSON',
                    success:function (res){
                        if(res.status){

                        }else{
                            $.each(res.detail,function (k,v){
                                $('#id_' + k).next().text(v[0]);
                            });
                        }
                    },
                    error: function (xhr, status, error) {
                        console.error("AJAX 请求失败:", error);
                    }
                });
            });
        })
    </script>

后端对应的视图函数代码如下:

def customer_charge_add(request,pk):
    print(pk)
    print('request.Post',request.POST)
    form = ChargeModelForm(data=request.POST)
    if not form.is_valid():
        return JsonResponse({'status':False,'detail':form.errors})

    return JsonResponse({'status':True})

浏览器报错页面展示如下:

记录的日志如下

———————————————————————-

问题解决:关于明明表单有数据的情况下,报错提示没数据及后台收不到数据

AJAX 请求的数据格式问题

  • 默认情况下,Django 的 request.POST 只能解析 application/x-www-form-urlencoded 格式的数据。
  • 如果你的 AJAX 请求使用了 application/json 或其他格式,request.POST 将无法解析数据。
评论
还没有评论
    发表评论 说点什么