为什么 'message' 关于 connect-flash 未定义?
Why is 'message' undefined regarding connect-flash?
我正在构建一个快速应用程序,当用户完成表单时;如果成功,他们将看到确认提交的警报。
在我的 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("/");
});
最后在我的 main.js 文件中进行 jquery 调用(我使用 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
在客户端控制台上。我已经通读 https://www.npmjs.com/package/connect-flash and looked through the example at https://github.com/jaredhanson/connect-flash/tree/master/examples/express3 但我不确定为什么消息没有被传回。
添加一个中间件:
app.use(flash());
app.use(function(req, res, next){
res.locals.messages = req.flash();
next();
});
然后在前端使用messages
也许,问题在于您的代码尝试访问 message
变量的方式。正如@Pushkin 所说 message
将被传递给视图,并且不能被 javascript.
引用
你可以试试这个(如果你使用 jade 作为视图引擎)
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
变量。
如果使用 ejs
,则语法几乎相似
<% if (message) { %>
// Do something here..
<% } %>
我正在构建一个快速应用程序,当用户完成表单时;如果成功,他们将看到确认提交的警报。
在我的 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("/");
});
最后在我的 main.js 文件中进行 jquery 调用(我使用 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
在客户端控制台上。我已经通读 https://www.npmjs.com/package/connect-flash and looked through the example at https://github.com/jaredhanson/connect-flash/tree/master/examples/express3 但我不确定为什么消息没有被传回。
添加一个中间件:
app.use(flash());
app.use(function(req, res, next){
res.locals.messages = req.flash();
next();
});
然后在前端使用messages
也许,问题在于您的代码尝试访问 message
变量的方式。正如@Pushkin 所说 message
将被传递给视图,并且不能被 javascript.
你可以试试这个(如果你使用 jade 作为视图引擎)
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
变量。
如果使用 ejs
,则语法几乎相似
<% if (message) { %>
// Do something here..
<% } %>