为什么“消息”未定义连接闪光?

我正在build立一个快速的应用程序,当用户完成一个表单; 如果成功,他们将看到一个提醒,确认他们的提交。

在我的server.js文件中,我正在声明

var cookieParser = require("cookie-parser"), session = require("express-session"), flash = require("connect-flash"), app = express(); 

其次是:

 app.use(cookieParser("keyboard cat")); app.use(session({ cookie: { maxAge: 60000 }, secret: "keyboard cat" })); app.use(flash()); require("./server/config/routes.js")(app);` 

我的路线文件:

 app.get("/", function(req, res){ res.render("index", { message: req.flash("success") }); }); app.post("/sendMsg", function(req, res){ mainController.sendMsg(req, res); }); app.get("/sentSuccess", function(req, res){ req.flash("success", "Thanks!"); res.redirect("/"); }); 

最后在jquery调用的main.js文件中(我使用SweetAlert来提醒样式):

 $(document).ready(function(){ if(message){ var frm = document.getElementsByName('msgForm')[0]; swal({ title: "Sweet!", text: "Thanks", imageUrl: "javascripts/sweetalert/thumbs-up.jpg" }); frm.reset(); } }); 

我遇到的问题是Uncaught ReferenceError: message is not defined在客户端控制台上Uncaught ReferenceError: message is not defined 。 我已经通过https://www.npmjs.com/package/connect-flash阅读,并通过在https://github.com/jaredhanson/connect-flash/tree/master/examples/express3的例子看,但我'米不知道为什么消息不被传回。

也许,问题是你的代码尝试访问messagevariables的方式。 正如@Pushkin所说的message将被传递给视图,并不能像JavaScript所引用的那样。

你可以试试这个(如果你用玉石作为视图引擎的话)

  if message .script // your javascript or function() 

所以最后代码看起来像:

 if message .script var frm = document.getElementsByName('msgForm')[0]; swal({ title: "Sweet!", text: "Thanks", imageUrl: "javascripts/sweetalert/thumbs-up.jpg" }); frm.reset(); 

现在你将能够访问messagevariables。

如果使用ejs则语法几乎相似

 <% if (message) { %> // Do something here.. <% } %> 

添加一个中间件:

 app.use(flash()); app.use(function(req, res, next){ res.locals.messages = req.flash(); next(); }); 

然后在前端使用messages