试图为一个回调函数获得多个请求响应

时间:2019-09-03 07:24:23

标签: html node.js express

我有一个使用node.js和express的计算器网络应用程序。我试图使按钮进行加,减,乘和除。我有一个仅使用一个res.send();的POST请求,但是当我尝试使用if语句发出多个请求时,出现以下错误:ReferenceError:未定义getElementById。我在.js文件中使用了getElementById。我似乎无法找到一种对每个按钮使用多个请求的方法,因为我是新来表达的人。

math.html

<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Calculator</title>
  </head>
  <body>

<h1>Calculator</h1>

    <form action="/math" method="post">

      <input type="text" name="n1" placeholder="First Number" >
      <input type="text" name="n2" placeholder="Second Number" >
      <button type="submit" name="add">+</button>
      <button type="submit" name="subtract">-</button>
      <button type="submit" name="multiply">*</button>
      <button type="submit" name="divide">/</button>

      </form>

  </body>
</html>

calculator.js

const express = require("express");
const bodyParser = require("body-parser");

const app = express();
app.use(bodyParser.urlencoded({extended: true}));

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

app.post("/math", function(req, res) {

var num1 = Number(req.body.n1);
var num2 = Number(req.body.n2);

var add = num1 + num2;
var subtract = num1 - num2;
var multiply = num1 * num2;
var divide = num1 / num2;

//create if statements for each button click to add multiply etc...
if(getElementById('button').name="add") {
  res.send("Answer: " + add);
}
if (getElementById('button').name="subtract") {
  res.send("Answer: " + subtract);
}
if (getElementById('button').name="multiply") {
  res.send("Answer: " + multiply);
}
else {
  res.send("Answer: " + divide);
}

});

预期结果:单击每个数学符号可以计算方程式。 实际结果:ReferenceError:未定义getElementById

2 个答案:

答案 0 :(得分:1)

我想你把事情搞混了。

getElementByIdwindow对象的属性,因此只能在浏览器上下文中访问。 https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById

您正在尝试在NodeJS上下文中访问getElementById,该上下文显然不包含该引用。

您要查找的值可能在express的req回调属性中可用。我还没有测试过。

答案 1 :(得分:0)

我建议您通过req正文发送您要查找的数据,您可以通过在客户端使用AJAX来实现。一旦您通过AJAX发送了req,就可以使用点符号来访问它。

一个示例:req.query.name将从带有以下链接的HTTP arg中获取名称,例如localhost:1234 / myapp?name = helloworld! 或抓住您通过AJAX发布/获取的内容

像上面提到的那样,您不应将客户端代码用于后端逻辑。