2015-09-16 19 views
5

devo funzione da chiamare http.delete e passare un parametro di bandiera:Perché non posso passare il parametro quando http.delete in AngularJs?

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

Allora presumo che posso ottenere il req.body con codice seguente. Tuttavia, ottengo sempre undefined nello console.log. Ho usato esattamente lo stesso codice in http.post e funziona bene quando si passa il parametro.

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

Sono confuso perché lo stesso codice non può passare parametri a http.delete? qualcuno sa come passarlo?

+0

Il primo passo per eseguire il debug di questo sarebbe andare alla scheda di rete nella console del browser e ispezionare la richiesta. L'angolare inviava json o era il parametro aggiunto all'URL. –

+1

@KevinB sembra che non invii il json ma non capisco perché, poiché lo stesso codice di http.post funziona bene. – erkpwejropi

risposta

4

La specifica HTTP consente corpi su DELETE, ma alcuni client non li inviano e alcuni proxy/server li escludono/li ignorano se presenti. Questo dovrebbe funzionare per passarlo come parametro querystring:

return $http.delete(url, {params: {'currentFieldSetFlag':flag}}); 
Problemi correlati