【发布时间】:2017-12-11 02:02:35
【问题描述】:
在使用 HTML、Javascript 和使用 Express 的 Node 创建 web 应用程序时,我经常想根据操作更改页面。
在 HTML 中,我可以添加一个 href 链接,然后适当地让我的 app.js 节点文件路由。
例如:
在节点中:
app.get('/test', function(req,res){
res.render('public/webpage.html', {name: 'MyName'});
});
在 HTML 中:
<a href="test">Bar</a>
但是,我正在努力通过 Javascript 而不是 HTML 来做到这一点。在这种情况下,我经常想通过 Javascript 将表单数据发送到我的 Node 服务器,然后让 Node 服务器使用该信息来呈现一个新页面。
例如:
$.ajax({
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
url: 'http://localhost:8888/route',
followAllRedirects: true,
'success': function(res){
#Ideally, the webpage would be changed by the node route,
}
});
在节点中:
app.post('/route', function(req,res){
res.render('public/webpage.html', {name: 'John'});
});
目前,我的 HTTP 请求不会导致呈现新页面,而是会返回一个字符串,该字符串是我想要呈现的整个 html 页面。为了轻松解决问题,我只是这样做:
'success': function(res){
document.location.href = '/newpage.html';
$('body').replaceWith(res);
}
有没有办法让 javascript 方法调用 POST 请求到 Node 服务器(或可以发送数据的任何类型的请求),然后让 Node 使用动态变量呈现不同的 html 页面?我不能只做 window.href.location 因为这不会呈现静态页面的变量输入(这些必须在服务器端计算)。此外,虽然我确信有一种方法可以在 JS 中呈现页面并且希望获得相关信息,但我对如何在服务器上执行此操作更感兴趣,因为我认为处理所有重定向会更干净。
谢谢!
【问题讨论】:
标签: javascript jquery html node.js express