在res.send()之后页面无法上传

时间:2015-08-09 15:33:24

标签: javascript jquery mongodb

我正在构建一个node.js网络应用,并有一个查询mongo数据库的删除功能,删除document,然后将用户发送到另一个页面。

但是,在调用该函数后,即使删除document并且我可以手动加载该页面,也不会重新加载新页面。相反,现有的页面就在那里。

以下是我在函数完成后从终端看到的GET消息:

GET /students 200 9ms - 5.64kb

删除功能:

remove: function(req, res) {
    function(err, result) {
        Models.Student.remove({myid:{$regex:req.params.students_id}},function(err,removed) {
        if (err){
            throw err;
        }
        else{
            res.send('/students');
        }
    })
},

呈现新页面的功能:

index: function(req, res) {
    var viewModel = {
        student: [],
        };
    Models.Student.find({},function(err, student) {
            if (err) { throw err; }
            if (student) {
                viewModel.student=student;
                res.render('../views/students.handlebars',viewModel);
                } 
            else {
                res.redirect('/');
            }
    });    
},

Jquery脚本:

$(function(){
$('#btn-delete').on('click', function(event) {
    event.preventDefault();
    var $this = $(this);
    var remove = confirm('Are you sure you want to delete this student?');      
    if (remove) {
        var studentid = $(this).data('id');
        $.ajax({url: '/students/'+studentid, type: 'DELETE'}).done(function(result) {
            if (result) {
                $.ajax(
                    {type: 'GET',
                    url:'/students',
                    success: function(){
                        console.log('success');
                        }
                    }
                )
            }
            else{
                console.log('Unable to delete');
            }
        });
    }
});
});

路由:

app.get('/students',students.index);

我非常感谢给予的任何帮助。

2 个答案:

答案 0 :(得分:0)

在res.send()之后,调用return next ();没有参数来触发下一个中间件,它将与/ students字符串一起发送200状态。只有这样才能触发ajax中的done()解析器。

答案 1 :(得分:0)

我设法在done()之后添加componentHandler.upgradeDom()命令来加载新页面:

window

});