Как разобрать тело ответа POST в узле - PullRequest
1 голос
/ 04 октября 2019

    
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.get(bodyParser.urlencoded({extended: true}));
app.get("/", function(req, res){
  res.sendFile(__dirname + "/index.html");
});
app.post("/", function(req, res){
console.log(req.body.crypto);
});
app.listen(3000, function(){
  console.log("server is running in port 3000");
});

    
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.get(bodyParser.urlencoded({extended: true}));
app.get("/", function(req, res){
  res.sendFile(__dirname + "/index.html");
});
app.post("/", function(req, res){
console.log(req.body.crypto);
});
app.listen(3000, function(){
  console.log("server is running in port 3000");
});
<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>Bitcoin ticker</title>
</head>

<body>
  <h1>Bitcoin Ticker</h1>

  <form action="/" method="post">
    
    <select name="crypto">
      <option value="BTC">Bitcoin</option>
      <option value="ETC">Ethereum</option>
      <option value="LTC">Litecoins</option>
    </select>

    <select name="fiat">
      <option value="USD">US Doller</option>
      <option value="GBP">GB Pounds</option>
      <option value="EUR">EU Euroes</option>
    </select>

    <button type="submit" name="button">Check</button>
  </form>

</body>

</html>

возникла проблема в коде javascript, когда iam, запрашивая пост-запрос, обозреватель сообщает, что невозможно прочитать свойство crypto из undefined, когда при выполнении кода iam нет ошибкино когда iam selection не может прочитать свойство "crypto" и я думаю, что здесь может быть ошибка console.log (req.body.crypto);

Ответы [ 3 ]

2 голосов
/ 04 октября 2019

Ваш req.body не определен,

вы должны сделать эту строку

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

до

app.use(bodyParser.urlencoded({extended: true}));
0 голосов
/ 04 октября 2019

Subburaj и Ron537 являются правильными, потому что body-parser - это middleware, а в express вы используете метод use, чтобы включить middleware в вашу экспресс-программу. в вашем случае, чтобы включить анализатор тела module/middleware в ваше приложение, сделайте app.use(bodyParser.urlencoded({extended: true})), если вы хотите опубликовать как вложенный документ, так и app.use(bodyParser.urlencoded({extended: false})), если вы не хотите размещать вложенный документ

0 голосов
/ 04 октября 2019

Похоже, ваш req.body не определен.

Угадайте, проблема в body-parser.

Попробуйте изменить эту строку

app.get(bodyParser.urlencoded({extended: true}))

На

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

Вместо применения body-parser с app.get, сделайте это с app.use

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...