2017-08-05 47 views
1

我想用NodeJs和Express(我是一个非常初学者编程)构建REST API,CRUD请求在Postman中工作正常,但现在我不知道如何通过表单发送DELETE请求与AJAX。我只想插入一个id文本输入并将其提交给服务器以删除MongoDB中的文档。我到处搜索,但我无法理解如何执行此操作。如何使用Node/Express和AJAX发送表单删除请求?

App.js

app.delete('/delete/:id', (req, res) => { 
 
    let id = req.params.id; 
 
    if (!ObjectID.isValid(id)) { 
 
    return res.status(400).send(); 
 
    } 
 
    Blog.findByIdAndRemove(id).then((docs) => { 
 
    res.status(200).send({docs}) 
 
    }).catch((e) => { 
 
    res.status(400) 
 
    }); 
 
});

HTML

            <!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <meta charset="utf-8"> 
 
    <title>Titolo</title> 
 
    </head> 
 
    <body> 
 
    <form action='/delete/:id' method="POST"> 
 
     <input id="id" type="text" name="id" /><br /> 
 
     <button id:"cancella" type="submit">Submit</button> 
 
    </form> 
 

 
    <script src="/js/jquery.js"></script> 
 
    <script src="/js/script.js"></script> 
 
    </body> 
 
</html>

的script.js

$(document).ready(function() { 
 
$('#cancella').on("click", function() { 
 
    var id = $('#id').val(); 
 
    $.ajax({ 
 
    url: '/delete/:id', 
 
    type: 'DELETE', 
 
    data: {"id": id}, 
 
    dataType: 'json', 
 
    success: function(data) { 
 
    //do something 
 
    }}); 
 
}); 
 
});

+0

您的表单有一个POST方法,我不确定HTML表单是否支持DELETE方法。 – TGrif

回答

0

表单应具有一个隐藏的解决方法字段,显示您正在进行如下删除请求:

<html> 
<head> 
<meta charset="utf-8"> 
<title>Titolo</title> 
</head> 
    <body> 
<form action='/delete/:id' method="POST"> 
    <input type="hidden" name="_method" value="PUT"/> 
    <input id="id" type="text" name="id" /><br /> 
    <button id:"cancella" type="submit">Submit</button> 
</form> 

<script src="/js/jquery.js"></script> 
<script src="/js/script.js"></script> 
</body> 
</html> 

如果您发送删除请求,则应该不再需要使用/delete,因为它是多余的。