Node.js+MongoDB博客提交评论触发Cannot POST /错误如何解决
问题原因
- 前端代码使用了
$.ajax发送异步请求,但页面没有引入jQuery库,导致doComment函数执行直接报错,无法触发return false阻止表单默认提交行为。表单未设置action属性时会默认提交到站点根路径/,你的后端没有定义POST /路由,就会出现“CANNOT POST /”报错。 - 后端
/do-comment接口中取ID的字段和前端传递的字段不匹配,就算Ajax正常执行也会更新评论失败。
修复步骤
1. 引入jQuery库
在EJS文件的</head>标签前添加jQuery引入代码:
<script src="https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js"></script>
2. 修正后端接口的字段取值
把后端/do-comment路由里的req.body.id改成req.body.post_id,修正后的代码如下:
app.post("/do-comment", function(req, res){ blog.collection("posts").update({"_id": ObjectId(req.body.post_id) }, { $push: { "comments": {author: req.body.author, comment: req.body.comment, email: req.body.email } } }, function (error, post) { res.send("comment Sucessfull"); }); });
3. 可选优化
给form标签添加action="/do-comment"属性作为降级方案,就算JS执行异常也不会直接跳404。
内容的提问来源于stack exchange,提问作者Milan Bhandari
相关产品推荐
相关产品推荐

