首页 > 解决方案 > 当我运行我的 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)
})

标签: javascripthtmlnode.jsexpress

解决方案


  1. 根据 Express res.send([body])文档:

body 参数可以是 Buffer 对象、String、对象或 Array

您不能单独发送号码。所以你可以使用发送一个字符串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' }

推荐阅读