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

标签 ajax node.js express

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

我认为这是由于异步问题或重复响应引起的。尝试了很多方法都无法解决,还请高手指点。

该代码与用户付费服务时相关,提高用户等级。

获取访问 token => 验证 => 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. 浏览器发出 GET 请求,服务器以 HTML 文档响应,浏览器呈现它
  2. 用户采取行动
  3. 浏览器发出 POST 请求,服务器以 HTML 文档响应,浏览器呈现它

您在前端开始编码的是另一种方法:

  • 您通过 AJAX 发出 POST 请求,服务器以一些 JSON 进行响应,您使用 JavaScript 修改当前文档以让用户知道
  • 关于ajax - Express.js res.render 不重定向,仅显示在控制台中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36261360/

    相关文章:

    javascript - 使用带有 jQ​​uery 插件的 Browserify

    node.js - 无服务器/lambda 容器中的 Express 重定向不起作用

    node.js - 尝试从应用程序服务中的子目录运行 Node 应用程序提供 server.js 文件

    javascript - 在特定屏幕分辨率下隐藏标签

    javascript - String.replace 回调不起作用

    javascript - apache mod_proxy,为跨域ajax调用配置ProxyPass和ProxyPassReverse

    javascript - 使用 AngularJS 发送 GET 请求时无法从 WebStorm IDE 执行 'open' 无效 URL

    javascript - RabbitMQ amqp.node 与 Nodejs Express 集成

    javascript - 从ajax get请求接收到的数据

    表格元素的 JavaScript 不透明度