2017-08-06 52 views
1

我正在使用Node.js/Express.js後端。在前端,我以這種方式將對象傳遞給我的後端API。爲什麼使用「[]」快速附加對象數組名稱

var accountData = {"my_tags" : ["tag1", "tag2", "tag3"]} 
$.post("/api/submission/1", accountData, function(sucess){ 
     console.log("success"); 
    }); 

在後端app.js是設置這樣

var app = express(); 

app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use('/', index); 
app.use('/api', api); 

然後在我的API

router.post("/api/submission/:pageNumber", function (req, res) { 
    console.log(JSON.stringify(req.body)); 

打印{ 「my_tags []」: 「標籤1」,「 tag2「,」tag3「]}

爲什麼Node或Express將」[]「附加到」my_tags「對象數組的名稱?

回答

0

當然,當我重讀我的文章時,強迫自己寫這篇文章讓我在2分鐘後得出答案。原來是因爲我的url編碼body解析器的擴展屬性被設置爲false。更改

app.use(bodyParser.urlencoded({ extended: false })); 
在app.js

app.use(bodyParser.urlencoded({ extended: true })); 

停止附加 「[]」 我的數組冠軍。希望這會幫助別人。

+1

這裏也是文檔參考:https://github.com/expressjs/body-parser#extended – jsalonen

+0

謝謝! @jsalonoen,只是學習表達明顯,我很感謝幫助。 –

+1

另外值得一提的是,jQuery的默認內容類型是'application/x-www-form-urlencoded'(http://api.jquery.com/jquery.ajax/),它最終由bodyParser處理。將其設置爲JSON將允許您使用'bodyParser.json()'解析它。 – jsalonen

相關問題