1

ユーザーがフォームを完了すると、高速アプリを構築しています。成功すると、送信を確認するアラートが表示されます。

私の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、クライアント側のコンソールにあります。https://www.npmjs.com/package/connect-flashを読み、https ://github.com/jaredhanson/connect-flash/tree/master/examples/express3の例を調べましたが、メッセージが返されない理由がわかりません。

4

2 に答える 2

1

ミドルウェアを追加します:

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

次にmessages、フロントエンドで使用します

于 2015-08-01T02:57:46.867 に答える
0

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..
<% } %>  
于 2015-08-02T06:54:22.610 に答える