Express-POST无法传递数据

问题描述

我希望用户从下拉列表中选择数据,然后将数据发送到另一个视图。 形式如下:

<div class="container">
            <!-- If data exists,handle them -->
            <ul>
                <% if (locals.data) { %>
                    <script language="javascript">
                        var x = document.getElementById("Error");
                        x.classList.add('invisible'); 
                    </script>
                        <form action="/renderer" method="POST" id="sc-form">
                            <label for="model">Choose a model:</label>
                            <select name="model" id="model">
                                <% data.forEach(function(dat) { %>
                                    <option value="<%= dat %>"> <%= dat %> </option>
                                <% }); %>
                            </select>
                            <input type="submit" value="Render the model!" />
                        </form>
                <% } %>
            </ul>
        </div>

这是route.js的处理程序:

app.post('/renderer',function(req,res) {
        res.render('renderer.ejs',{model: req.body.model} );
    });

最后,当我尝试使用以下命令访问renderer.ejs上的POST数据时: var modelName = req.query.model;,在<script>标记内,出现此错误:

Uncaught ReferenceError: req is not defined
    at renderer?model=myModel.stl:44

我完全遵循所有教程,这是我的server.js

// server.js
const express      = require('express');
const app          = express();
const upload       = require('express-fileupload');
const bodyParser   = require('body-parser');
const session      = require('express-session');
const flash        = require('connect-flash');
const cookieParser = require('cookie-parser');
const port         = process.env.PORT || 8080;


    // get information from html forms
    app.use(bodyParser.urlencoded({ extended: true })); // to support URL-encoded bodies
    app.use(bodyParser.json()); // to support JSON-encoded bodies


    //for uploading files
    app.use(upload());


    //in order to use flash messages
    app.use(cookieParser());
    app.use(session({
        secret: 'justarandomsecret',saveUninitialized: true,//this prevents the browser from using empty sessions
        resave: true
    }));
    app.use(flash());

    
    //app.use(favicon(__dirname + './public/images/favicon.ico')); //This line is erroneous
    app.use('/public/images/',express.static('./public/images')); //Use this to allow views to have access to images
    app.use(express.static('public')); //This made Bootstrap work

    app.set('view engine','ejs'); // set up ejs for templating

// routes ======================================================================
require('./app/routes.js')(app); // load our routes and pass in our app

// launch ======================================================================
app.listen(port,(err) => {
    if (err) console.log(err);
    console.log('Server is up on port ' + port);
});

我还必须说我尝试了req.body.modelreq.query.model,但没有任何效果!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...