Express.js res.render不重定向,只显示在控制台中

时间:2016-03-28 11:24:39

标签: ajax node.js express

这次我想使用res.render来显示html作为数据库更新的成功。我做过好几次,但这次不起作用。它不是渲染html文件,只显示在chrome的控制台上。

我认为这是因为异步问题或重复响应造成的。我试过很多方法,但我无法解决它,所以指针赞赏。

当用户付费服务时,代码是相关的,提高用户的级别。

获取访问令牌=>验证=> res.render

app.post('/payment/validate', function(req, res, next){

// Get access token 
request.post({
    url : 'https://payment-company/get/token'
}, function(err, response, body) {
    if(!err & response.statusCode == 200) {
        var result = JSON.parse(body);
        var accessToken = result.response.access_token;

    // Validate payment (compare paid and would be paid)
        request.get({
            headers : { 'Authorization' : accessToken }
            url : 'https://payment-company/find/paymentid'
        }, function (err, response, body) {

            if (!err && response.statusCode == 200){
                var result = JSON.parse(body);

                if (result.response.amount == req.body.price){
                    Members.findOne({id : req.user.id}, function(err, member){

                        // If no problem, update user level
                        member.level = 2;
                        member.save(function(err, result){
                            if (err) return next();

                            res.render('payment.view.result.ejs',
                                {
                                    title : 'Success !',
                                    description : 'level up.'
                                });
                        });
                    });
                } 
            } else {
                ...
            }
        }); 
    }
})
});

对不起详细的代码我试图缩短代码,没有问题,直到res.render,res.render将工作,但它不是显示页面,而只是它发送HTML代码到chrome的控制台。

1 个答案:

答案 0 :(得分:1)

看起来对这些请求的工作方式有点误解。我认为你打算做什么:

  1. 浏览器发出GET请求,服务器响应HTML文档,浏览器呈现
  2. 用户采取行动
  3. 浏览器发出POST请求,服务器响应HTML文档,浏览器呈现
  4. 您在前端开始编码的是另一种方法:

    1. 您通过AJAX发出POST请求,服务器响应一些JSON,您使用JavaScript修改当前文档以让用户知道