ExpressJS中POST方法上的变量会话的范围

Scope of variable session on POST method in ExpressJS

本文关键字:变量 范围 会话 POST 方法 ExpressJS      更新时间:2023-09-26

node中POST方法中的req.session.myvar = 'a value'.js with express.js似乎只有一个局部范围。我无法从其他方法获取 req.session.myvar 值。但是,如果我将值保存在GET方法中,则范围似乎具有球形范围。我需要开机自检方法做同样的事情。

var express  = require('express'),
port     = 3000;
var app = express();
app.use(express.bodyParser());
app.use(express.cookieParser(''));
app.use(express.session({ secret: 'secret'}));
app.use(express.static(__dirname + '/public/'));
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.post('/create', function(req, res) {
   req.session.firstName = 'jhon';
   console.log(req.session);
});

app.get('/create', function(req, res) {
   console.log(req.session);
   req.session.lastName = 'Doe';
   res.render('create');
});

app.post('/create_occur', function(req, res) {
   console.log('/create_occur');
   console.log(req.session);
});
app.listen(port);
console.log('Listening on port ' + port);

这是我用来进行测试的简单 .ejs。

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="/js/jquery-1.9.1.min.js"></script>
        <script type="text/javascript" src="/js/socket.io.js"></script>
    </head>
    <body>        
        <section>
            <input type="text" id="title" placeholder="Title">
            <input type="submit" id="enviar" value="Enviar">
        </section>       
        <section>
            <input type="text" id="name" placeholder="Nombre">
            <input type="submit" id="nombre" value="Nombre">
        </section>
        <script>
            $(document).ready(function() {                
                $("#enviar").click(function() {
                    var title = $('#title').val();
                    $.ajax({
                        url:  '/create',
                        type: 'POST',
                        dataType: 'json',
                        data: {'title': title}
                    });
                });               
                $("#nombre").click(function() {
                    var name = $('#name').val();
                    $.ajax({
                        url:  '/create_occur',
                        type: 'POST',
                        dataType: 'json',
                        data: {'title': name}
                    });
                });
            });
        </script>
    </body>
</html>

请帮帮我,我不明白为什么会这样。我在博客和视频中看到几个类似的例子,他们这样做并且有效。

感谢。

好的,我终于想通了!!这是一个愚蠢的问题/被遗忘了。我要添加一行来响应请求:

res.end();

或:

res.redirect('/');

再见,我希望这能有所帮助。