gpt4 book ai didi

javascript - 如何使用 Node js Express 渲染 View 模板

转载 作者:行者123 更新时间:2023-12-01 02:51:01 25 4
gpt4 key购买 nike

我创建了一个 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}) 渲染我想要导航到的 View 页面,其中 verify 是另一个 我想要将用户导航到的 .ejs 文件,JSON 对象是我想要传递给该模板的数据。

我的代码没有渲染 View 页面,我不知道为什么。我控制台记录了服务器上的所有数据,并且所有数据都被正确提取,但我的 View 页面从未导航到验证 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});
});
});

最佳答案

res.render 不适用于 ajax 请求,ajax 调用的响应将返回并可在 success 函数内访问,但是 res.render 不起作用,而且 res.redirect 也不适用于 ajax 请求。

因此,您需要使用表单提交请求或在前端重定向到该路由,这在技术上也是一个 get 请求,但没有 ajax 示例:

仅使用 HTML:

<a href="/zonepass/<your id>?zone_key=<your zone key>">Verify</a>


使用 JavaScript:

function verify(key) {
window.location.href= "/zonepass/"+ <your id> + "?zone_key=<your zone key>"
}

此外,在 NodeJS 路由中,您可以使用 req.params.id 访问 id 和使用 req.query.zone_key 访问 zone_key ,所以你的服务器代码将是:

app.get('/zonepass/:id', function(req,res) {

var id = req.params.id;
var zone_key = req.query.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});
});
});

顺便说一句,如果 key 未经过验证,您将需要在验证 View 内进行处理,例如您在验证 View 中显示错误或消息, key 不正确......或与您的逻辑相关的任何消息

关于javascript - 如何使用 Node js Express 渲染 View 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46969763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com