Javascript 即使在刷新时,页面的快速内容也始终可见
我正在尝试学习Express,我正在尝试构建类似bit的东西。ly的网页(url缩写器等)现在我可以在页面上显示链接,但当我刷新页面时,链接仍然存在,直到我重新启动服务器它才会消失;我可以生成新链接并将其替换,但如果我刷新页面,它不会消失 快递:Javascript 即使在刷新时,页面的快速内容也始终可见,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试学习Express,我正在尝试构建类似bit的东西。ly的网页(url缩写器等)现在我可以在页面上显示链接,但当我刷新页面时,链接仍然存在,直到我重新启动服务器它才会消失;我可以生成新链接并将其替换,但如果我刷新页面,它不会消失 快递: var data; var url; /* GET home page. */ router.get('/', (req, res, next) => { //var d_20803340c40722494a7c737b0725d017
var data;
var url;
/* GET home page. */
router.get('/', (req, res, next) => {
//var d_20803340c40722494a7c737b0725d0178d4e1d40;
res.render('index', { 'data': data, 'link': url });
});
/* POST HANDLER */
router.post('/link', function(req, res, next) {
var pattern = /^((http|https|):\/\/)/;
url = req.body.link;
if (!pattern.test(url))
{
url = "http://" + url;
bitly.shorten(url)
.then(response => {
data = response.data.url;
res.redirect('/');
});
}
})
感谢您的输入。您的
var数据
和var-url代码>在全局范围内,在get
函数之外。这意味着在发布到'/link'
的过程中,当您设置url
和data
时,它们被设置在程序中的全局范围内,并且不在任何单个请求的范围内。因为您随后将这些值发送到res.render
,一旦设置了这些值,就会在每次get请求时将它们提供给客户端
您在刷新时看到它的原因是程序将这些存储在单个请求的范围之外,并且当您刷新(执行新的GET请求和渲染)时,每次都会得到相同的值。啊,我明白了,所以,有什么办法可以解决这个问题,这样我仍然可以将变量传递给模板引擎,并使用post请求的信息更改这些变量的值?@bexo有很多方法,具体取决于您想做什么。首先想到的是,您可以重定向到“/?data=…&link=…”
,让get
路由仅在查询字符串中找到它们时才向下发送它们。然后包括一个主页链接,该链接将重定向到没有查询字符串的页面。另一个答案(我更喜欢)是让post
返回包含数据的JSON对象,而不是执行重定向。然后从客户端执行POST-async并显示数据。