2013-10-10 39 views
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。

回答

0

好吧,我終於明白了!這是一個愚蠢的問題/遺忘。我是一個行添加到這個請求:

res.end(); 

或者:

res.redirect('/'); 

再見,我希望這可以幫助。