2016-10-07 5 views
3

私はAJAXとNodeを初めて使用していて、これをどう扱うべきか分かりませんでした。 dbから行を削除した後に同じ経路にリダイレクトしたいが、GETメソッドを使用してDELETE ajaxを呼び出す。私はフロントエンドスクリプトからページをリダイレクトできると信じていますが、どちらが正しい戦略であるかわかりません。どんな助けもありがとう!Ajax Node/Expressでリクエストとレスポンスを削除する - GETメソッドでどのようにリダイレクトすることができますか?

フロントエンドJS製造AJAX呼び出しscript.js

$('.deleteRepository').on('click', function(event) {  
    event.stopImmediatePropagation(); 
    var username = $(this).attr('username'); 
    var repoName = $(this).attr('repoName'); 
    var oReq = new XMLHttpRequest(); 
    oReq.open("delete", "/user/"+username+'/'+repoName); 
    oReq.send(); 
    }); 

myRoute.js

router.route('/:username/:repository') 
    .delete(function(req, res) { 
     console.log('\n\nDelete method called\n\n'); 
     let username = req.params.username; 
     let repoName = req.params.repository; 

     deleteRepositoryFromUser(req, res) 
     .then(function() { 
      console.log('deleted, now redirect'); 
      //I want to redirect to this page using GET, but logs DELETE 
      //I also want to redirect to /user/TonyStark/Favorites 
      res.redirect(200, '/user/'+username+'/Favorites'); 
     }) 

コンソール

GET /user/TonyStark/delMe 200 114.702 ms - 4075 
...  

Delete method called 


deleteRepositoryFromUser() 
repoName: delMe 
username: TonyStark 
deleted, now redirect 
DELETE /user/TonyStark/delMe 200 4.568 ms - 44 //how can I make GET? 
//why is it not going to /user/TonyStark/Favorites? 

答えて

0

この行は間違っていますres.redirect(200, '/user/'+username+'/Favorites');です。コード200でリダイレクトすることはできません。301または302のいずれかをリダイレクトする必要があります.HTMLコードの参照先はここをクリックしてください。https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

+0

おかげSvabael:myRoute.js
。しかし、私が試してみると、ループ内でリクエストを再帰的に送信し続けます。 –

0

HTTPメソッドをリダイレクトする前に手動でGETに設定することもできます。

router.route('/:username/:repository') 
.delete(function(req, res) { 
    console.log('\n\nDelete method called\n\n'); 
    let username = req.params.username; 
    let repoName = req.params.repository; 

    deleteRepositoryFromUser(req, res) 
    .then(function() { 
     console.log('deleted, now redirect'); 

     //Explicitly set the HTTP method to GET 
     req.method = "GET" 

     res.redirect(200, '/user/'+username+'/Favorites'); 
    }) 
関連する問題