You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python+Flask开发闪卡应用时遇Unsupported Media Type错误求助

问题分析与解决方案

核心问题原因

后端接口期望接收application/json格式的请求,但前端提交的表单数据默认是application/x-www-form-urlencoded或multipart/form-data格式,两者Content-Type不匹配,触发了错误提示。

具体修复方案

方案一:修改后端适配表单提交格式

如果前端是普通表单提交,后端无需强制解析JSON,改用表单字段获取方式:

# app.py 中接收请求的路由修改示例
@app.route('/submit-card', methods=['POST'])
def submit_card():
    # 通过form对象获取表单字段值
    course = request.form.get('course')
    lecture = request.form.get('lecture')
    front = request.form.get('front')
    back = request.form.get('back')
    # 后续业务逻辑处理...

方案二:修改前端以JSON格式提交数据

若坚持使用JSON格式交互,需修改前端代码,手动构造JSON数据并设置正确的请求头:

<!-- make.html 中的表单与提交逻辑修改示例 -->
<form id="card-form">
    <input type="text" name="course" placeholder="Course">
    <input type="text" name="lecture" placeholder="Lecture">
    <textarea name="front" placeholder="Front of card"></textarea>
    <textarea name="back" placeholder="Back of card"></textarea>
    <button type="submit">Submit</button>
</form>

<script>
document.getElementById('card-form').addEventListener('submit', function(e) {
    e.preventDefault(); // 阻止默认表单提交行为
    // 将表单数据转为JSON对象
    const formData = new FormData(this);
    const jsonData = Object.fromEntries(formData.entries());
    
    // 以JSON格式发送请求
    fetch('/submit-card', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(jsonData)
    })
    .then(response => response.json())
    .then(data => {
        // 处理后端响应
        console.log(data);
    })
    .catch(error => {
        console.error('Submit error:', error);
    });
});
</script>

调试建议

  • 打开浏览器开发者工具(F12),查看网络请求面板,确认请求的Content-Type和请求体内容是否符合后端要求。
  • 若后端必须接收JSON,需确保前端请求头中Content-Type严格设置为application/json,且请求体是合法的JSON字符串。

内容的提问来源于stack exchange,提问作者Capver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 06:42:05