为什么'消息'关于连接闪存的未定义?

时间:2015-08-01 02:53:38

标签: node.js express alert 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并查看https://github.com/jaredhanson/connect-flash/tree/master/examples/express3处的示例,但我不确定为什么不会传回消息。

2 个答案:

答案 0 :(得分:1)

添加中间件:

Uint8ClampedArray

然后在前端使用app.use(flash()); app.use(function(req, res, next){ res.locals.messages = req.flash(); next(); });

答案 1 :(得分:0)

也许,问题在于您的代码尝试访问https://www.domain.com变量的方式。正如@Pushkin所说,message将被传递给视图,并且不能被javascript引用。

你可以尝试这个(如果你使用玉作为视图引擎)

message

所以最后代码看起来像:

    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