JavaScript通过Ajax向Python Flask传数据时出现400错误请求求助
解决AJAX POST到Flask的400错误问题
问题根源
- 前端数据格式不匹配:你设置了
Content-type: application/json,但直接传递了原始字符串,未封装成JSON对象,导致Flask无法解析请求体,返回400错误。 - 后端处理逻辑错误:
request.get_json()已经是解析后的JSON对象,无需再用json.load(),且未处理请求体解析失败的情况。
前端代码修改
将发送的数据封装为JSON对象并转为字符串,同时简化AJAX配置:
function send(){ const line = textbox.value; $.ajax({ type: "POST", url: "/send", data: JSON.stringify({ data: line }), // 封装为JSON结构并转字符串 contentType: "application/json", // 明确指定内容类型 dataType: "json" // 预期返回JSON格式响应 }); }
后端代码修改
修正JSON解析逻辑,添加错误处理,并确保返回合法响应:
from flask import jsonify @app.route("/send", methods=["POST"]) def print_data(): # 解析请求体,失败时返回400 request_data = request.get_json() if not request_data: return jsonify({"error": "无效的JSON数据"}), 400 # 获取data字段,不存在时设为空字符串 data = request_data.get("data", "") main.FileMan.post_data(str(data)) # 返回成功响应 return jsonify({"status": "success"}), 200
额外注意事项
- 确认前端
textbox元素能正确获取值,比如用document.getElementById('textbox').value或jQuery的$('#textbox').val()。 - 可通过浏览器开发者工具的网络面板查看请求体格式,确认
Content-Type头是否为application/json。
内容的提问来源于stack exchange,提问作者Werner van der Merwe
相关产品推荐
相关产品推荐

