2015-01-04 16 views
2

我正在使用Angular POST到我的API。正如我處理CORS我已經設置了標題爲www-form-urlencoded避免「前的飛行。解析application/x-www-form-urlencoded在Expressjs中

$http.post(url, {key1: value1, key2: value2},{"headers":{ "Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8" }}). 
    success(function(data, status, headers, config) { 

    }). 
    error(function(data, status, headers, config) { 

    }); 

現在的問題是,我似乎無法解析對象被張貼,即使我有這個在我server.js我本以爲這做的工作:

var bodyParser  = require('body-parser'); 
app.use(bodyParser.urlencoded({ extended: true })); 

我試圖用req.body.key1訪問張貼的值,但我得到undefined

+0

您是否在上面定義「.post」路線的那一行? – loganfsmyth

+0

對不起 - 你的意思是? – tommyd456

+0

在您的路由處理程序中,添加'console.dir({req:req,res:res})'將請求和響應的內容轉儲到您的控制檯。偉大的方式來調試/跟蹤。 –

回答

3

您還沒有實際發送application/x-www-form-urlencoded數據,因此中間件正在變得困惑。設置Content-Type標題會告訴服務器你要發送什麼樣的數據,但實際上並沒有在任何地方改變數據的格式,因爲沒有告訴Angular你想發送urlencoded數據,所以服務器仍然得到JSON。

This answer顯示如何編碼數據。

+0

也使用params:而不是數據: – Herr