Ajax Express NodeJS在页面的一部分加载ejs模板

时间:2013-07-13 02:42:42

标签: ajax node.js express ejs

好的,所以我有代码将我带到我的索引页面,然后我通过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?

0 个答案:

没有答案