я не получаю желаемый результат при запуске моего node.js код в чем здесь ошибка?

#javascript #html #node.js #express

#javascript #HTML #node.js #экспресс

Вопрос:

итак, я использую этот bmiCalculator, где я ввожу 2 числа, и эти 2 числа вычисляются на моем сервере, и отображается ответ, но я столкнулся с проблемами при получении моего вывода.когда я нажимаю отправить, я получаю список всех моих файлов в индексе c, но не ответ. Может кто-нибудь, пожалуйста, помочь мне с этим?

мой HTML-код

 <!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <h1>BMI calculator</h1>
    <form action="/" method="post">
    <input type="text" name="num1">
    <input type="text" name="num2">
    <input type="button" value="submit">
    </form>
</body>
</html>
  

мой js-код

 let express = require("express")
let bodyParser = require("body-parser")
let app = express()
app.use(bodyParser.urlencoded({extended: true}))

app.listen(3000,function(){
    console.log("working")
})
app.get('/',function(request,respond){
    respond.sendFile(__dirname "/bmiCalculator.html")
})
app.post('/',function(req,res){
    let num1 = Number(req.body.num1)
    let num2 = Number(req.body.num2)
    let result = num1/num2*num2
res.send(result)
})
  

Ответ №1:

  1. Согласно документам Express res.send([body]):

Параметр body может быть объектом Buffer, строкой, объектом или массивом

Вы не можете отправить номер сам по себе. Итак, вы могли бы отправить строку с помощью result.toString()

  1. Вы должны использовать <input type="submit" value="submit"> для отправки формы.

Например.

server.js :

 let express = require('express');
let bodyParser = require('body-parser');
let app = express();
app.use(bodyParser.urlencoded({ extended: true }));

app.listen(3000, function() {
  console.log('working');
});
app.get('/', function(request, respond) {
  respond.sendFile(__dirname   '/bmiCalculator.html');
});
app.post('/', function(req, res) {
  console.log(req.body);
  let num1 = Number(req.body.num1);
  let num2 = Number(req.body.num2);
  let result = (num1 / num2) * num2;
  res.send(result.toString());
});
  

bmiCalculator.html :

 <!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <h1>BMI calculator</h1>
    <form action="/" method="post">
      <input type="text" name="num1">
      <input type="text" name="num2">
      <input type="submit" value="submit">
    </form>
</body>
</html>
  

Сервер регистрируется после отправки формы на стороне клиента:

 working
{ num1: '1', num2: '2' }