2016-12-07 106 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