Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 即使在刷新时,页面的快速内容也始终可见_Javascript_Node.js_Express - Fatal编程技术网

Javascript 即使在刷新时,页面的快速内容也始终可见

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

我正在尝试学习Express,我正在尝试构建类似bit的东西。ly的网页(url缩写器等)现在我可以在页面上显示链接,但当我刷新页面时,链接仍然存在,直到我重新启动服务器它才会消失;我可以生成新链接并将其替换,但如果我刷新页面,它不会消失

快递:

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并显示数据。