【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将无法解析数据。
