老实说,这真的是我的头脑。
这是我的jquery删除呼叫:
$(document).ready(function() {
$(".deleteUser").on("click", deleteUser);
});
function deleteUser() {
var id = $(this).data("id");
var confirmation = confirm("are you sure?");
if (confirmation) {
$.ajax({
type: "DELETE",
url: "/users/delete/"+id
});
} else {
return false;
}
};
在我的节点中,我有这个:
app.delete("/users/delete/:id", (req, res) => {
console.log("id sent:", req.params.id);
res.send("get a delete call!");
});
显然,节点文件的功能远远不止这些,但是我只放置了一部分。
当我单击应该启动删除的按钮时,出现错误:
删除http://localhost:3000/users/delete/ 404(未找到)
我在邮递员上使用了相同的URL,并且得到了正确的答复!
那么,ajax何时会失败?我检查了一切似乎还好。我什至删除了确认位,直接去调用删除,但是我仍然得到相同的404。
请,有人可以发现错误吗?
编辑 删除HTML如下所示:
<ul>
<% users.forEach((user) => { %>
<li><%= user.name %> - <a href="#" class="deleteUser" data-id="<%= user.id %>">Delete</a></li>
<% }) %>
</ul>
我正在使用ejs。
答案 0 :(得分:2)
我认为您的id
空白。上面的网址不是对您的节点路由的有效请求,您应该在上面的网址中传递ID。
主要问题可能在您的HTML中,该文本呈现user.id的空白值
data-id="<%= user.id %>"
假设这是来自某些持久性引擎,该引擎使用下划线在id
属性前添加前缀,请尝试
data-id="<%= user._id %>"