ajax - json.decoder.JSONDecodeError:预期值:第 1 行第 1 列(字符 0)ajax 请求
问题描述
我有一个 ajax 请求,在 django 视图中,我有以下打印和输出。
我在这一行有错误,我不知道为什么。
parsed_json = json.loads(request.body)
我尝试使用 utf8 解码请求正文,但没有任何改变
AJAX 调用:
$("#add_user_button").click(function (event) {
event.preventDefault();
$.ajax({
type: "POST",
url: '/user/',
data:
{
'action': "addUser",
'username': $('#id_username').val(),
'password': $('#id_password').val(),
'groups': $('#id_groups').val()
}
,
contentType: 'application/json; charset=utf-8',
processData: false,
});
}
DJANGO 查看打印:
print(request.POST.get("username"))
#print(request.encoding) #returns none
print("Request body is :")
print(request.body)
print(type(request.body))
输出:
hello
Request body is :
b'username=hello&password=world&csrfmiddlewaretoken=&addUser=Add+User'
<class 'bytes'>
解决方案
如果您分析您的请求正文,您会发现它不是 JSON,要发送 JSON,您必须在来自您的对象的 ajax 请求中对其进行编码。
$("#add_user_button").click(function (event) {
event.preventDefault();
$.ajax({
type: "POST",
url: '/user/',
data:
JSON.stringify({ // <--here
'action': "addUser",
'username': $('#id_username').val(),
'password': $('#id_password').val(),
'groups': $('#id_groups').val()
})
,
contentType: 'application/json; charset=utf-8'
});
}
推荐阅读
- javascript - 什么是 _interopRequireDefault ?
- html - 为什么向 div 添加内容会使它们不对齐?
- r - 避免在 purrr 映射调用中返回匿名函数中最后评估的表达式
- java - JVM 是否为未初始化的对象调用终结器?
- python - GLIBC_2.12 问题
- excel - 在有条件的列中查找
- python - 烧瓶错误:sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:mongodb
- async-await - 获取 TypeError:存根异步方法时无法存根不存在的自己的属性
- windows-installer - DriverPackageInstall 尝试在安装后启动驱动程序
- symfony - Symfony 4 覆盖 Sonata Admin CRUD 控制器