从表单中获取输入,从数据库中检索数据并显示输出

时间:2017-04-19 16:31:29

标签: javascript html css node.js express

我正在使用nodejs,express和mongodb。我正在使用cloud9 IDE

我想创建一个带有表单的页面,该表单从用户那里获取输入,从数据库中搜索相应的数据并在同一页面上显示该数据(重新加载后),如果数据不存在则显示特定的响应。

这就是我所做的 -

路线 -

app.get("/",function(req,res){
var asked = req.query.asked;
  Name.findOne({name:asked},function(err,foundAsked){
      if(err){console.log("ERROR!!!");}
      else{res.render("Landing.ejs",{foundAsked:foundAsked}); }
  });
 }); 

EJS文件 -

//Form takes name as input from the user

<form >
    <input type="text" name="asked" action="/" method="GET">
    <button class="button">Submit</button>
</form>



//If data is found last name is returned
<% if(foundAsked){ %>
    <h2 >  <%= foundAsked.Lastname %> </h2>
<% } %>


 //blank space stays there which is replaced by a response,if after 
   //submission nothing is found
<% if(!foundAsked){ %>
    <h5></h5> 
<% } %>

JS -

 $(".button").click(function(){

          $("h5").text("No data present");
 });

但问题是,如果找不到数据,则显示响应,但它仅在页面重新加载之前保留。 我试着寻找答案,但我发现了任何答案。请帮忙

1 个答案:

答案 0 :(得分:1)

您要显示的文字只会在点击button后显示,重新加载后,您将不得不再次点击(点击将显示文字,并触发重新加载,因此文字会再次消失。)

您需要另一个按钮(不会提交)才能触发此消息。或者更确切地说,为什么不首先显示(将此内联放在<h5>标签内)?

您需要区分“无数据”或“无查询”。 你可以在后端做到这一点,类似于:

app.get("/",function(req,res){
var asked = req.query.asked;
  Name.findOne({name:asked},function(err,foundAsked){
      if(err){console.log("ERROR!!!");}
      else{res.render("Landing.ejs",{foundAsked:foundAsked, asked: asked}); }
  });
 }); 

然后在Landing.ejs

<% if(!foundAsked && asked){ %>
        <h5>No data present</h5> 
  <% } %>