2014-12-03 37 views
1

後的數據這是我的角度支柱的要求:不能拉離request.body

var webCall = $http({ 
       method: 'POST', 
       url: '/validation', 
       async : true, 
       headers: { 
       'Content-Type': 'text/html' 
       }, 
       data: {email: "[email protected]"}}); 
    webCall.then(successHandler, errorHandler); 
現在在我的服務器的NodeJS

,下面的代碼提取後的數據:

app.post('/validation',function(req,res){ 
     req.on('data',function(data){ 
      console.log(data.toString()); 
     }); 

但安慰要求身體:

app.post('/validation',function(req,res){ 
    console.log(req.body); 
} 

控制檯空物體。

+0

您是否檢查過,您的javascript控制檯說了什麼?我個人使用$資源代替$ http和router.post/get/put/delete而不是app.post ...無論如何粘貼你的JS控制檯錯誤日誌,讓我們看看它說什麼。乾杯。 – NarendraSoni 2014-12-03 09:17:15

+0

它不會控制檯錯誤。正如我在問題中所說的那樣,它只是安慰空白的對象。 – Pravin 2014-12-03 09:23:02

+0

你想用$資源嘗試嗎?然後我可以用一個非常簡單的解決方案來指導你。 – NarendraSoni 2014-12-03 09:29:30

回答

3

一個可能的原因可能是您沒有添加(或在問題中顯示)body-parser中間件。

var bodyParser = require('body-parser'); 

// for parsing application/json 
app.use(bodyParser.json()); 

// for parsing application/x-www-form-urlencoded 
app.use(bodyParser.urlencoded({ extended: true })); 

// for parsing multipart/form-data 
app.use(multer()); 

routes爲你希望接收數據前添加相關的中間件。就你而言,看起來你只需要第一個。另外,正如@ themyth92所指出的,傳遞正確的標題。

閱讀全文here

+0

事實證明我使用了錯誤的內容類型「text/html」而不是「application/json」 – Pravin 2014-12-03 13:27:36