我正在使用带有express和ejs的nodejs。
互联网上的每个人都会问如何将值从节点传递给视图,但相反的是什么呢?
例如,我要求我的用户在表单中输入一个字符串,当用户单击该按钮时,如何在不将其作为参数传递给URL的情况下获取该字符串?
表格:
<div class="container">
<form style="width:50%">
<div class="form-group">
<label for="text">Name of the product</label>
<input type="text" class="form-control" id="pName">
</div>
<div class="form-group">
<label for="text">Reciever</label>
<input type="text" class="form-control" id="reciever">
</div>
<div class="form-group">
<label for="text">Location</label>
<input type="text" class="form-control" id="location">
</div>
<!-- <div class="checkbox">
<label><input type="checkbox"> Remember me</label>
</div>-->
<button type="submit" class="btn btn-default">Submit</button>
</form>
app.js
var express = require('express');
var app = express();
//ALL GLOBAL VARIABLES
var port = 8080;
app.get('/', function(req, res) {
res.render('index.ejs');
});
app.get('/barcode', function(req,res) {
res.render('barcode.ejs');
});
app.listen(port);
我知道我可以这样做:
app.get('/url/:parameter', function(req.res) {
var foo = req.params.parameter;
}
但如果我不想使用该网址,是否可以检索数据?
答案 0 :(得分:5)
使用POST作为html表单的方法
<form action="/myapi" method="post">
<input type="text" class="form-control" id="pName" name="pName">
<button type="submit" class="btn btn-default">Submit</button>
</form>
然后在后端使用app.post
处理客户端表单“操作”
app.post('/myapi', function(req, res) {
res.send('The pName is "' + req.body.pName + '".');
});
答案 1 :(得分:2)
您可以使用POST方法代替GET。您需要将Express中的路线更改为
public Form1()
并在表单上添加方法
app.post('/url', function(req.res))
答案 2 :(得分:1)
如果您使用POST请求,则参数不是URL的一部分。 E.g。
app.post('/path', function(req, res) {
...
//You can retrieve the parameters of the POST request here
]);
您需要body-parser
模块才能获取POST参数。这里有an answer关于如何在设置路线后获取POST参数。
您的表单应该有方法和操作:
<form action="/path" method="POST">...</form>
答案 3 :(得分:0)
根据您的问题,通常,如果您想从唯一ID中获取值,则可以将该值存储为全局变量。这样您就可以轻松获取当前用户和与用户相关的详细信息。