好的,所以我有代码将我带到我的索引页面,然后我通过ajax调用代码来回复我的mongoose db的结果。所有这些调用都在工作,但我似乎无法弄清楚如何让我的代码在ajax调用成功时执行,以在当前页面的一部分中加载另一个较小的ejs文件?我已经阅读了一些事情,说我需要渲染ejs服务器端,但是如何调用服务器并让它只更新页面的一部分而不是整页加载。我试图在已经产生完整结果的页面上执行搜索功能,所以我想用已搜索的内容替换完整的结果。以下是我对数据库的导出调用:
exports.index = function(req, res, next){
Recipe.find().
sort('-updated_at').
exec(function(err, recipes, count){
if( err ) return next( err );
res.render('index', { title: 'Recipe Finder Index', recipes:recipes });
})
};
exports.search = function(req, res, next){
var param=req.params.search;
console.log(param);
Recipe.find({"fn":new RegExp(param)}).
sort('-updated_at').
exec(function(err, recipes, count){
if( err ) return next( err );
//res.render('index', { title: 'Recipe Finder Index', recipes:recipes });
res.contentType('json');
console.log(JSON.stringify({recipes:recipes}));
res.write(JSON.stringify({recipes:recipes}));
res.end();
})
};
然后我在第一个加载脚本标记的ejs文件中有这个:
$('#submitSearch').click(function(){
console.log("clicked");
$.ajax({
url: '/ajax/'+$('input[name=search]').val()
, type: 'POST'
, cache: false
, complete: function() {
//called when complete
console.log('process complete');
},
success: function(data) {
console.log(data);
console.log('process sucess');
//returns correct data, but then how can I call ejs?
},
});
因此,代码为我提供了我正在寻找的对象,它从数据库中获取数据,但是我无法找到代码,让我的网站的一部分重新加载一个ejs文件,其中包含我已经找回的新对象。我在网上看到不再支持部分,我应该使用include,但看起来它只给了网站的一部分ejs,不告诉我如何用ajax中的新数据渲染ejs?