在Nodejs中将值从视图传递到节点而没有URL

时间:2017-10-25 08:35:06

标签: javascript node.js express ejs

我正在使用带有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;
}

但如果我不想使用该网址,是否可以检索数据?

4 个答案:

答案 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中获取值,则可以将该值存储为全局变量。这样您就可以轻松获取当前用户和与用户相关的详细信息。