我正在使用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");
});
但问题是,如果找不到数据,则显示响应,但它仅在页面重新加载之前保留。 我试着寻找答案,但我发现了任何答案。请帮忙
答案 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>
<% } %>