Node.js Express,EJS,请求-在执行请求时显示纺车

时间:2018-08-13 09:03:39

标签: node.js express ejs node-request

我正在使用请求https://github.com/request/request。可以在进行请求时在前端显示纺车吗?假设取消隐藏纺车?如果是,该怎么办?

截至目前,我正在显示警报消息成功或错误...

router.post('/search', (req, res) => {
    request.get({
        headers: {
            "authorization": auth
        },
        url: "localhost/abc/search?name=peter"
    }, (error, response, body) => {
        if(error) {
            return console.dir(error);
        }
      var jsonBody = JSON.parse(body);

      if(jsonBody.status === 200) {
        console.log('Request successful!');
        req.flash('success', 'Database search successful! :)')
        res.redirect('/search')
        }
      if(jsonBody.success === false) {
        console.log('Request not successful!');
        req.flash('error', 'Request not successful! :(')
        res.redirect('/search')
      }
    });
});

作为前端,我正在使用ejs:

   <html lang="en">
    <head>
    </head>
    <body>
     <div class="container-fluid">
      <div class="card card-container">
        <h2 class='login_title text-center'><%= page %></h2>
        <hr>

        <form class="form-container" method="post" action="/search">
          <button class="btn btn-lg btn-primary" type="submit">Search</button>
        </form>

        <% if (messages.success) { %>
            <div class="alert alert-success alert-dismissible" role="alert">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <%= messages.success %>
            </div>
        <% } %>
        <% if (messages.error) { %>
            <div class="alert alert-danger alert-dismissible" role="alert">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <%= messages.error %>
            </div>
        <% } %>

      </div>
     </div>
    </body>
   </html>

1 个答案:

答案 0 :(得分:0)

根据您的代码,您似乎正在将发布请求发送到相同的url,并将数据附加到响应中以进行Flash消息传递。

不可能使用当前使用的请求系统来运行此纺车,但是我会向您介绍学习AJAX(Fetch API / Axios是简化此操作的好库)。

这基本上使您可以在不重新加载页面的情况下发出请求,然后将数据作为可访问的javascript变量返回。

例如:提交表单,您有一个事件处理程序,该处理程序停止您的表单执行常规请求,而是执行ajax请求。发送该ajax请求后,您就可以将加载轮设置为旋转(先隐藏然后显示:block或其他方法)。您的ajax请求在完成时有一个回调。在该回调中,您可以访问请求中的数据,并可以从那里继续。

要注意的另一件事是,使用此方法,以JSON返回变量比返回标准HTML,然后使用这些变量通过javascript创建所需的任何HTML并将其放置在HTML中更为合理。

This is a good site to learn AJAX,代码可能看起来有点长,但是上面提到的库会将其变成几行。