インデックス ページに移動するコードがあるので、マングース データベースから結果を返すために ajax を介してコードを呼び出します。これらの呼び出しはすべて機能していますが、現在のページの一部に別の小さな ejs ファイルをロードする ajax 呼び出しが成功したときにコードを実行する方法を理解できないようです。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();
})
};
そのため、script タグに読み込まれる最初の 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 ファイルをリロードさせるコードを見つけるのに問題があります。パーシャルがサポートされなくなったため、インクルードを使用する必要があることをオンラインで見ましたが、サイトの一部にのみ ejs を提供するように見えます.ajax からの新しいデータで ejs をレンダリングする方法を教えてくれませんか?