解决flask+xhr报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

在使用xhr向Flask后端路由传递JSON数据时,遇到decode失败的问题。经过检查,发现请求头被指认为非JSON格式。进一步调试显示有两个POST请求,原因是一个未被注释掉的HTMLform表单也在发送请求。解决方法是删除多余的请求,成功进行JSON解析。
摘要由CSDN通过智能技术生成

今天在用xhr向flask的后端路由传递信息时报错了,一直提示decode失败,反反复复检查格式,没错,确实是有效的json格式,还提示请求头不是json格式的,检查了几遍也没错。视图函数代码如下

@blue.route('/write/save/', methods=['GET', 'POST'])
def save_data():
    data = request.data.decode('utf8')
    data = json.loads(data)
    print(data)
    return 'Success'  # 返回响应
可是一看输出,这不是已经把data数据打印出来了吗

而且还提示我消息头不是application/json,所以在视图函数加上以下代码:

print("content_type:", request.headers.get("content_type"))

结果居然打印了两个请求头类型,所以判断肯定是发送了两个post请求,看下js,没有多余的请求,再看看html代码,果然找到了一个form表单,action对应的视图函数正是/write/save,请求的时候忘删了把这个注释掉,再进行json解析,ok,成功。我还以为是内容格式有问题,原来bug在这。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值