2017-06-02 26 views
-1

フォームのデータを削除しようとしています。 GETメソッドとPUTメソッドは機能しますが、DELETEは機能しません。私の目標は、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

ok、ありがとう、なぜdownvote?私は問題の修正方法を尋ねましたが、これは問題ですね。 – glassraven

+0

FWIW私は*あなたの質問をd​​ownvoteしませんでした。 – mscdex

+0

okしかし、ponuryの回答のdownvoteさえ公正ではない、時々私は本当にこれらの決定を理解していない... – glassraven

-1

MDNのドキュメントでは、フォームメソッドの属性には "POST"と "GET"メソッドしかありません。これを達成するにはAJAXを使用する必要があります

関連する問題