我已经查看了所有相关文章,并花了很长时间来搜索该文章,但尚未找到解决方案。我正在尝试呈现ejs模板,但是似乎什么也没有发生。我的代码:
前端脚本:
$('#search').click(function(){
var query =$('#search-query').val();//get value from searchbar
var url = '/search/' + query;
$.ajax({
url: url,
type:'GET',
success: function(data){
console.log('success');
},
error: function(){
console.log('error');
})
}
后端:
app.get("/search/:query", function(req, res){
var query = req.params.query;
Note.find({course: query}, function(err, foundNotes){//search database
if(err){
console.log(err);
} else {
console.log(foundNotes);//this displays the expected results from searching the database
res.render('search.ejs', {notes: foundNotes});//appears to do nothing
console.log('upload');//this also gets logged
}
})
});
基本上,当单击按钮时,我希望它向“ / search /:query”路径发出GET请求,并使用输入中的值作为搜索查询。然后,我正在搜索数据库,然后呈现一个显示搜索结果的ejs模板。
麻烦的是res.render('search.ejs,{notes:foundNotes})。它似乎无能为力。如果我手动输入路径,则可以使用,但是单击按钮后似乎无法使用。我想我可能在这里缺少关键概念。
任何帮助将不胜感激!
答案 0 :(得分:0)
在您的app.get之前,您的渲染引擎是否已正确设置?
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
您会在网络检查器中看到什么?
示例:
//我的Ajax处理程序
router.get("/a", function(req, res){ res.render("a.ejs",{a: 11})});
//我的ejs文件
<p>
<span>hello <%- a %></span>
</p>
//我在前面的ajax请求:
$.ajax({
url: "/a",
type:'GET',
success: function(data){
// in data i have : <p><span>hello 11</span></p>
document.getElementById("mydiv").innerHTML = data;
},
error: function(){
console.log('error');
}})