2017-08-05 104 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,因爲它是多餘的。