微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Express-POST无法传递数据

如何解决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 举报,一经查实,本站将立刻删除。