问题陈述:我有一个简单的HTML表单,要求用户提供三个号码。当他们点击提交时,我会将表单传递给node.js文件并将每个值分配给变量。
以下是我的HTML文件:
<body>
<form action="/" method="post">
<fieldset>
First number: <input type="number" name="param1"><br>
Second number: <input type="number" name="param2"><br>
Third number: <input type="number" name="param3"><br>
<input type="submit" value="submit" />
</fieldset>
</form>
</body>
这是我对node.js文件的一点点:
var http = require('http');
var math = require('mathjs');
var m = 3;
var n = 5;
var o = 7;
var p = 2;
http.createServer(function(req,res) {
function pleaseSolve () {
var comp = math.chain(m)
.add(m)
.divide(p)
.multiply(o)
.done();
res.writeHead(200, {'Content-Type': 'text/html'});
res.end("The answer is " + comp);
}
pleaseSolve();
}).listen(8080);
相反,我想要一个方法或类似的方法,使用HTML表单中的输入来分配这些变量,而不是简单地对它们进行硬编码。
编辑:我已经被投票了,我已经在网上搜索了两天以获得答案,我还没有找到答案。请建设性地,至少将另一篇文章与低调和非建设性联系起来。答案 0 :(得分:2)
以下Node.js代码将解决您的问题。 您需要一个路由来返回主html文件和获取发布数据的路由,并根据此数据返回结果。
var express = require('express')
var http = require('http');
var math = require('mathjs');
var bodyParser = require('body-parser');
var app = express()
// use body parser to easy fetch post body
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json())
// route to '/' to return the html file
app.get('/', function (req, res, next) {
res.sendfile('index.html');
});
//route that receives the post body and returns your computation
app.post('/solve', function (req, res, next) {
pleaseSolve(req.body, res);
});
app.listen(8080);
function pleaseSolve(parms, res) {
//get the parameters based on input name attribute from the html
//and parse strings to numbers
var m = +parms.param1;
var o = +parms.param2;
var p = +parms.param3;
var comp = math.chain(m)
.add(m)
.divide(p)
.multiply(o)
.done();
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end("The answer is " + comp);
}