簡體   English   中英

請求發布后請求體= {}

[英]Req.body ={} after request post

我有這個代碼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>

當我進入頁面時,在che控制台顯示“{}”,我沒有訪問POST變量。 我該如何解決這個問題?

您使用的編碼與您的身體解析器支持的編碼不同。

您在multipart/form-data使用多部分編碼( multipart/form-data ),但您的服務器需要JSON( application/json )或URL編碼數據( application/x-www-form-urlencoded )。

除非您需要上傳文件(需要多部分編碼),否則您應該使用URL編碼(如果未指定enctype ,則為defualt)。 然后使用bodyParser.urlencoded()解析器正確解析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 ,但你必須自己做一些解析,這就是為什么你應該避免多部分編碼,除非你真的需要它。

暫無
暫無

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

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