持续触发422 Unprocessable Entity错误,设置Content-Type仍未解决
422 Unprocessable Entity 错误排查方案
检查字段名大小写:代码里写的是
Image(首字母大写),但后端接口大概率期望小写的image——后端字段一般用小写驼峰或蛇形命名,大小写不匹配会让服务器识别不了字段,直接返回422。把Image改成image试试。注意文件字段的序列化问题:如果
image是上传的文件,data.get("image")拿到的是File对象,JSON.stringify会把它转成"[object File]",这根本不是有效的JSON,服务器肯定解析失败。如果后端要接收文件,别转JSON,直接用FormData发请求;如果只需要图片URL,确保前端传的是字符串格式的URL,不是File对象。校验空值字段:看看
eventData里有没有null或undefined的字段——用户没填必填项时,data.get()会返回null,后端可能要求这些字段必须是非空值。发送前可以加个简单过滤:const eventData = { title: data.get("title") || "", image: data.get("image") || "", date: data.get("date") || "", description: data.get("description") || "", };获取服务器详细错误信息:别只打印
response对象,调用await response.json()或await response.text()看看服务器返回的具体错误,比如哪个字段不符合规则,这能直接定位问题:const response = await fetch("http://localhost:8080/events", { /* ... */ }); if (!response.ok) { const errorDetails = await response.json(); // 若返回的是文本就用text() console.error("服务器错误详情:", errorDetails); throw json({ message: "Could not save event", details: errorDetails }, { status: 500 }); }
内容的提问来源于stack exchange,提问作者Abdul Suhaib
相关产品推荐
相关产品推荐

