2016-12-07 96 views
0

我通過AJAX發送POST請求到服務器後一種觀點:渲染在Node.js的POST請求

result.ejs

$.ajax({ 
    type: "POST", 
    url: "/result", 
    data: { score: score, rank: rank, name: name, email: email, historyLog: historyLog } 
    }); 

我reciveing它和保存數據到數據庫:

resultController.js

app.post('/result', urlencodedParser, function(req, res) { 

     var user = new User({ 
     name: req.body.name, 
     email: req.body.email, 
     score: req.body.score, 
     rank: req.body.rank, 
     historyLog: req.body.historyLog 
     }); 

     user.save(function(err) { 
     if (err) throw err; 
     console.log('User saved successfully!'); 

     }); 


    }); 

保存後,我想呈現一個新的視圖,我無法得到它的工作。 我曾嘗試保存功能後添加此:

res.redirect('page')res.render('page'),設置頁眉HTML /文本的上述

無工作。有什麼建議麼?

回答

2

AJAX通常用於當您不想而不是想要在別處導航,而是在後臺與服務器交談。要還是做你的方式,使用res.send("done");保存回調,console.log('User saved successfully!);之後,然後添加到您的Ajax請求:

success: function() { window.location.href = "/page"; } 

A到實施的整個過程更簡單的方法是使用<form method="post" action="/result">和提交它。

+0

是的,使用表單會容易得多,但我不能在我的情況下實現它,但是將這個函數添加到ajax成功了訣竅! +1 – mirta

-2

如果你想在保存後呈現頁面 - 添加它在節約回調,這樣

app.post('/result', urlencodedParser, function(req, res) { 
 

 
     var user = new User({ 
 
     name: req.body.name, 
 
     email: req.body.email, 
 
     score: req.body.score, 
 
     rank: req.body.rank, 
 
     historyLog: req.body.historyLog 
 
     }); 
 

 
     user.save(function(err) { 
 
     if (err) throw err; 
 
     console.log('User saved successfully!'); 
 
     res.render('page');//ADD HERE redirect o render 
 
     }); 
 

 

 
    });

+0

但是這會導致一個新的視圖被渲染?瀏覽器通過AJAX請求'/ result',這意味着回覆仍然被丟棄,不管它在哪裏或如何生成。 –

+0

如果你使用ajax,你需要發送一些響應信息(json或者只是狀態200),然後根據這個響應在客戶端做一個重定向(或者顯示一些東西) –

0

這是工作的罰款後。 更好地使用表單發佈。

app.post('/result', function(req, res) { 

    new user({ 
    name: req.body.name, 
    email: req.body.email, 
    score: req.body.score, 
    rank: req.body.rank, 
    historyLog: req.body.historyLog 
    }).save(function(err,doc) { 
    if (err) throw err; 
    else { res.render('pagename.ejs'); } 
    console.log('User saved successfully!',doc); 
    }); }); 

希望這會幫助你。

+0

這個答案不僅適用於一個人。可以參考這個。所以當你回答的時候請加說明 – lalithkumar

+0

補充求助 – Swapnil