我在expressjs中遇到了res.render()问题 我使用ajax在此路线上请求:
route.get('/about',authentication,(req,res)=>{
res.render('about');
});
我做了一些搜索,发现 res.render
不适用于 ajax 调用
那么如何在没有 res.render()
的情况下更改和渲染页面。
如果我删除 res.render
和 console.log
它实际上可以工作任何代码工作,但不是 res.render
(通过单击链接,我使用 ajax 请求在 header 中发送 token ,然后在我的 route ,我有一个身份验证中间件,它获取 token ,然后将用户重定向到 about.ejs
页面)
我只是想更改页面。任何想法都会对大家有所帮助。 谢谢 这是前端请求:
$(document).ready(function(){
$('#about').click(function(){
// window.location.href='/about';
$.ajax({
method:'get',
url:'http://localhost:5000/about',
headers:{"authtoken":localStorage.getItem('authToken')}
}).done(()=>{
// window.location.href='/about';
}).catch(e=>console.log('header.ejs error'));
});
});
最佳答案
res.render
使用模板合成一个 html 页面,并将最终合成结果从服务器发送到客户端。它不会在客户端窗口中呈现页面。
如果通过在浏览器地址栏中输入 URL 来发出请求,则浏览器将执行该请求并呈现服务器发送的结果。
如果您执行 ajax 请求,您将收到该响应,但您有责任在 .done
回调中对其执行某些操作。如果您发出 ajax 请求,浏览器不会神奇地知道如何处理数据。而且因为您的 .done
回调中没有任何内容,所以什么也不会发生。
所以你必须做这样的事情:
.done(response => {
var bodyContent = response.match(/<body>(.*)<\/body>/)[1]
$('body').html(bodyContent);
})
关于javascript - Nodejs 在 ajax 调用中表达 res.render,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50740067/