为什么“消息”未定义连接闪光?
我正在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的例子看,但我'米不知道为什么消息不被传回。
也许,问题是你的代码尝试访问message
variables的方式。 正如@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();
现在你将能够访问message
variables。
如果使用ejs
则语法几乎相似
<% if (message) { %> // Do something here.. <% } %>
添加一个中间件:
app.use(flash()); app.use(function(req, res, next){ res.locals.messages = req.flash(); next(); });
然后在前端使用messages