這次我想用res.render
將html顯示爲數據庫更新成功。我做了好幾次,但這次不起作用。它不是呈現html文件,只是在chrome的控制檯上顯示。Express.js res.render不重定向,只顯示在控制檯中
我認爲這是由於異步問題或重複響應引起的。我嘗試了很多方法,但我無法解決它,所以指針表示讚賞。
代碼與用戶付費服務相關,增加用戶級別。
獲得訪問令牌=>驗證=> 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的控制檯。
FWIW在將視圖名稱傳遞給'res時,您不需要添加'.ejs' .render()'。 – mscdex
@mscdex我做到了,因爲文件名有點,謝謝。 – Juntae
「它只是發送HTML代碼到Chrome的控制檯」聽起來像問題是在前端而不是後端...這是一個AJAX請求? – swider