我创建了一个Ajax请求(如下所示),它使用我需要的信息将数据传递给服务器。
function verify(key) {
$.ajax({
async: true,
type: 'GET',
url: '/zonepass/'+key,
data: {
'zone_key': key
},
success: function(res){
//alert('Sent a text message successfully to ' + res);
}
});
}
我在服务器端处理Ajax请求,我使用传入的数据查询我的Firebase数据库以获取其他相关信息。
然后我尝试使用res.render('verify',{zone: obj, key: zone_key})
呈现我要导航到的视图页面,其中verify是我要导航用户的另一个.ejs
文件,而JSON对象是我的数据想传递给那个模板。
我的代码没有渲染视图页面,我不确定原因。我控制台记录了服务器上的所有数据,所有数据都被正确拉出,但我的视图页面从未导航到验证ejs文件......
app.get('/zonepass/:id', function(req,res) {
var zone_key = req.param('zone_key');
var zone_obj = firebase.database().ref('zones').child(zone_key).once('value').then((snap) => {
obj = snap.val();
res.render('verify',{zone: obj, key: zone_key});
});
});
答案 0 :(得分:2)
res.render
无法使用ajax
请求,ajax调用的响应将在success
函数内返回并可访问,但res.render
也不会{{1} }}不适用于res.redirect
请求。
因此,您需要使用表单提交请求或将前端重定向到该路由,这在技术上也是ajax
请求,但没有get
示例:
仅使用HTML:
ajax
使用javascript:
<a href="/zonepass/<your id>?zone_key=<your zone key>">Verify</a>
同样在您的NodeJS路线中,您可以使用function verify(key) {
window.location.href= "/zonepass/"+ <your id> + "?zone_key=<your zone key>"
}
和id
使用req.params.id
访问zone_key
,因此您的服务器代码将为:
req.query.zone_key
顺便说一句,如果未验证密钥,您将需要在验证视图内部处理,例如,您在验证视图中显示错误或消息,密钥不正确...或任何与您的逻辑相关的消息