[英]How to access locals data in javascript part of index.ejs (view)?
[英]How to render to index.ejs if input field is empty?
如果单击表单按钮时输入字段为空,我想呈现为“/”。
点击按钮后我想要的URL是这样的:http://localhost:3000
Header.ejs
<form action="/search" method="GET">
<button id="submitID" type="submit">//button code</button>
<input id="myInputFieldID" type="search" name="q" placeholder="Search">
</form>
搜索.js
router.get('/', function(req, res) {
if (req.query.q.length > 0) {
db.query("...query...", function(err,example){
console.log("It contains text!");
res.render('search', { ...some data... });
});
} else {
db.query("...query...",function(err,example){
console.log("It's empty!");
res.render('index', { ...some data... });
});
}
});
我正在做的是如果输入包含文本则渲染到 search.ejs,如果输入为空则渲染到 index.ejs
问题是,当我渲染到 index.ejs 时,我得到了这个 URL: http://localhost:3000/search?q=
我试图删除 URL 的那部分,但它没有用。 不过,这是最有效的方法吗?
在输入文本出现之前我应该禁用按钮还是实现此目的的最佳方法是什么?
(我不想在<input>
中使用required
属性)。
更改条件语句以查看参数是否已定义且不为空应该可行。 尝试类似...转到 url
http://localhost:3000/search?q=testing
然后
http://localhost:3000/search?q=
const url = require('url');
const querystring = require('querystring');
const bodyParser = require('body-parser');
var express = require('express');
var app = express();
const PORT = 3000;
// about page
app.get('/:name', function(req, res) {
var name = req.params.name;
let parsedUrl = url.parse(req.url);
let parsedQs = querystring.parse(parsedUrl.query);
if (name == 'search') {
if ( typeof parsedQs.q !== 'undefined' && parsedQs.q )
{
console.log(`Parameter q is set as ${parsedQs.q}`);
res.send(`Parameter q is set as ${parsedQs.q}`);
}
else
{
console.log(`Parameter is not set and redirect`);
res.redirect('http://localhost:3000/defaultPage');
}
}else{
console.log(`Not looking at search page.`);
res.send("Defaul Page");
}
});
app.use(express.static("public"));
app.listen(PORT, err =>{
err ?
console.log("Error in server setup") :
console.log("Server listening on Port", PORT)
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.