簡體   English   中英

Nodejs post 方法 - req.body.variable 未定義

[英]Nodejs post method - req.body.variable undefined

我有以下App.js

var express = require('express'),
app = express(),
engines = require('consolidate'),
MongoClient = require('mongodb').MongoClient,
assert = require('assert'),
bodyParser = require('body-parser')

app.engine('html', engines.nunjucks);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');

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

app.post('/insert_movie', function (req, res) {

    var movieName = req.body.movie_name;

    console.log(movieName);

});

// No route matching:
app.use(function (req, res) {
    res.sendStatus(404);
});

var server = app.listen(3000, function () {
    var port = server.address().port;
    console.log('Express server listening on port %s.', port);
});

我的html頁面:

<h1> Add new movies</h1>

<form action="/insert_movie" method="POST">

    <input type="text" id="movie_name">
    <input type="text" id="movie_year">
    <input type="text" id="movie_imdb">

    <input type="submit" value="Submit" />

</form>

當我在文本框中輸入值並按提交時,我的 post 方法是 hit ('/insert_movie') 然而,movieName 不僅未定義,而且req.body{}

有人可以向我解釋我在這里做錯了什么,因為我在本網站上經歷了許多解決方案,但是他們都指出正文解析器設置不正確,我嘗試了以下操作:

  1. app.use(bodyParser.urlencoded({extended : true }));
  2. app.use(bodyParser.urlencoded());
  3. app.use(bodyParser.json());

這些都不能解決我的問題。

您需要將name屬性添加到 input 元素。 這是您的body-parser庫解析表單所需的內容之一。

<h1> Add new movies</h1>

<form action="/insert_movie" method="POST">
  <input type="text" name="movie-name" id="movie_name">
  <input type="text" name="movie-year" id="movie_year">
  <input type="text" name="movie-url" id="movie_imdb">
  <input type="submit" value="Submit" />
</form>

嘗試使用這個

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

app.use(bodyParser.urlencoded({
  limit: '500mb',
  extended: true,
  parameterLimit: 50000
}));
app.use(expressValidator());
app.use(bodyParser.json());

對 req.body 使用 multer 中間件

var app = require('express')();
var multer = require('multer);
var upload = multer().any();
 //multer().any() upload both array and file 
//add the multer middle ware in your router  
app.post('/insert_movie',upload,  function (req, res) {
    var movieName = req.body.movie_name;
   console.log(req.body);
    console.log(movieName);

});

你可以看到官方npm博客https://www.npmjs.com/package/multer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM