jQuery Ajax Delete调用未找到返回404

时间:2018-09-09 08:29:21

标签: jquery node.js

老实说,这真的是我的头脑。

这是我的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。

1 个答案:

答案 0 :(得分:2)

  

http://localhost:3000/users/delete/

我认为您的id空白。上面的网址不是对您的节点路由的有效请求,您应该在上面的网址中传递ID。

主要问题可能在您的HTML中,该文本呈现user.id的空白值

data-id="<%= user.id %>"
  

http://localhost:3000/users/delete/123

假设这是来自某些持久性引擎,该引擎使用下划线在id属性前添加前缀,请尝试

data-id="<%= user._id %>"