【问题标题】:Req.body ={} after request post请求发布后的 Req.body ={}
【发布时间】:2017-08-08 02:39:04
【问题描述】:

我有这个代码js:

app.use(express.static(__dirname));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // support json encoded bodies

app.get('/', function(req, res){
res.sendFile(__dirname+'index.html')
});

app.get('/ins.html', function(req, res){
res.sendFile(__dirname+'ins.html')
});

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

还有这段代码html:

<form method="post" enctype="multipart/form-data" action="/ins"><p>  <strong>INSERISCI LA TUA CAGATA<br></strong>
                            <br><p>Username&nbsp</p> <input type="text" name="username" required><br>
                            <br><p>Password &nbsp</p> <input type="password" name="password" required><br><br><br>
                        <input type="submit" class="mainBtn" id="submit" value="Inserisci Cagata">
                        <p>
                    </form></h2>

当我转到该页面时,在控制台显示“{}”并且我无法访问 POST 变量。 我该如何解决这个问题?

【问题讨论】:

    标签: javascript html node.js express post


    【解决方案1】:

    您使用的编码与您的任何一个正文解析器支持的编码不同。

    您在表单中使用多部分编码 (multipart/form-data),但您的服务器需要 JSON (application/json) 或 URL 编码数据 (application/x-www-form-urlencoded)。

    除非您需要上传文件(需要多部分编码),否则您应该使用 URL 编码(如果未指定 enctype,则默认使用该编码)。然后使用 bodyParser.urlencoded() 解析器正确解析正文:

    <form method="post" enctype="application/x-www-form-urlencoded" action="/ins">
                          <!--   ^--- note the enctype   -->
      <p>
        <strong>INSERISCI LA TUA CAGATA<br></strong>
        <br>
        <p>Username&nbsp</p>
        <input type="text" name="username" required>
        <br>
        <br>
        <p>Password &nbsp</p>
        <input type="password" name="password" required>
        <br>
        <br>
        <br>
        <input type="submit" class="mainBtn" id="submit" value="Inserisci Cagata">
      </p>
    </form>
    

    如果您确实需要多部分编码(例如,如果您要上传文件),则可以使用多部分正文解析器(例如 multipartybusboy)。请注意,由于 multipart 是一种复杂的编码,所以您不会直接得到req.body,但您必须自己进行一些解析,这就是为什么您应该避免使用 multipart 编码,除非您确实需要它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2022-06-24
      • 1970-01-01
      相关资源
      最近更新 更多