在Express中更新POST请求的页面内容

我遇到了一个问题,我试图通过一个表单完成的POST请求来更新网页的内容,但问题是variables被设置为全局范围,每当我刷新页面的内容仍然那里。 有人解释了什么是问题,并告诉我,我可以“… 使用数据返回一个JSON对象,而不是做一个redirect,然后从客户端执行POSTasynchronous并显示数据。 ”这是代码我使用的是:

performance:

var data; var url; /* GET home page. */ router.get('/', (req, res, next) => { res.render('index', { 'data': data}); }); /* 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("/"); }); } }); 

我正在使用jQuery的POST请求:

 $('#shortLink').on('click', () => { $.ajax({ type: 'POST', url: '/link', data: {link: $('#linkInput').val()}, success: data => { console.log(data); } }); }); 

我想要做的是获取input的值,将它发送到Express上的POST处理程序,然后将这些信息传回主页,而不必离开页面。 就像常见的Ajax请求一样。 有人可以详细说明我build议做什么,以上? 或者给我另一个解决scheme。

没有规定说在处理发布请求后你必须redirect。 只需通过res.json({'url': response.data.url})将数据发回,然后在$ .ajax成功处理程序中,它将通过data.url