2017-06-02 97 views
-1

我試圖刪除表單的數據。 GET和PUT方法可以工作,但不能刪除。我的目標是用JS函數改變POST方法的形式,然後用刪除按鈕調用它,這樣我就可以刪除數據。但它不起作用。該HTML:Node.js/Express DELETE方法不起作用

<form id="protest_form" action="scout_post" method="POST"> 

      <input type="text" id="scoutName" name="scoutName" placeholder="name"> <br> 
      <input type="text" id="scoutSurname" name="scoutSurname" placeholder="surname"> <br> 
      <input type="text" id="scoutPassword" name="scoutPassword" placeholder="password"> <br> 

      <button type="submit" id="button" class="btn btn-primary">Submit</button> 
      <button type="button" id="button" class="btn btn-danger" onclick="deleteForm()">Delete</button> 
     </form> 

的JS功能:

function deleteForm() { 

     document.getElementById('protest_form').setAttribute("method", "delete"); 
     document.getElementById('protest_form').submit(); 

    } 

和節點路線:

app.post('/scout_post', urlencodedParser,function (req,res){ 

    var name= req.body.scoutName, 
     surname=req.body.scoutSurname, 
     password=req.body.scoutPassword; 


      db.collection('scoutPost').insertOne(
       { 'name': name, 'surname': surname,'password':password}, 
       function (err, r) { 
        assert.equal(null, err); 
        res.send("Document inserted with _id: " + r.insertedId); 
       } 
      ); 
}) 

app.delete('/scout_post', urlencodedParser,function (req,res){ 

     var name= req.body.scoutName, 
      surname=req.body.scoutSurname, 
      password=req.body.scoutPassword; 


       db.collection('scoutPost').remove(
        { 'name': name, 'surname': surname,'password':password}, 
        function (err, r) { 
         assert.equal(null, err); 
         res.send("Document deleted"); 

        }); 

    }) 

當我點擊按鈕調用deleteForm()函數,我得到這個錯誤:

Cannot GET /scout_post?scoutName=&scoutSurname=&scoutPassword= 

如果我改變H TML和Node路由到GET方法,我得到插入的文檔,點擊DEL按鈕時不會被刪除......我該如何解決這個問題?謝謝

回答

1

在HTML表單中只允許GET和POST。如果您想提交DELETE請求,則必須通過XHR客戶端,在服務器端使用a method override middleware並在客戶端進行相應更改。

+0

好的,謝謝,爲什麼downvote?我問過如何解決這個問題,這是一個問題,對嗎? – glassraven

+0

FWIW我*沒有* downvote你的問題。 – mscdex

+0

好吧,但即使ponury的答案downvote是不公平的,有時我真的不明白這些決定... – glassraven

-1

作爲關於MDN的文檔說,表單方法屬性上只有「POST」和「GET」方法可用。您需要使用AJAX來完成此操作