2015-09-16 78 views
5

我有函數來調用http.delete和傳遞參數的標誌:爲什麼我在AngularJs中的http.delete時無法傳遞參數?

function softDeleteDatasource(datasourceId,flag) { 
      var url = baseUrl + datasourceId; 
      return $http.delete(url, {'currentFieldSetFlag':flag}); 
     } 

那麼,我想我可以得到req.body與下面的代碼。但是,我總是在console.log中獲得undefined。我在http.post中使用完全相同的代碼,並且在傳遞參數時工作正常。

var bodyParser = require('body-parser'); 
var jsonParser = bodyParser.json(); 
router.delete('/:datasourceId', jsonParser, function(req, res) { 
    console.log(req.body.currentFieldSetFlag); 
} 

我很困惑,爲什麼相同的代碼不能在http.delete傳遞參數?任何人都知道如何傳遞它?

+0

調試此操作的第一步是轉到瀏覽器控制檯中的網絡選項卡並檢查請求。有角度發送json,或者是被添加到url的參數。 –

+1

@KevinB它看起來不會發送json,但我不明白爲什麼,因爲http.post的相同代碼運行良好。 – erkpwejropi

回答

4

HTTP規範允許刪除DELETE上的實體,但某些客戶端不會發送它們,並且一些代理/服務器將刪除/忽略它們(如果存在)。這應該能夠將它作爲查詢字符串參數傳遞:

return $http.delete(url, {params: {'currentFieldSetFlag':flag}}); 
相關問題