0
帶有express.js的node.js中的POST方法中的req.session.myvar ='a value'似乎只有一個本地範圍。我無法從其他方法獲得req.session.myvar值。但是,如果我將值保存在GET方法中,範圍似乎具有o globar範圍。我需要POST方法做同樣的事情。ExpressJS中POST方法的變量會話範圍
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>
請幫助我,我不明白爲什麼會發生這種情況。我在博客和視頻中看到幾個相似的例子,他們這樣做並且工作。
Thx。