快速重新加载新的上下文页面

我有一个列出事件的页面,pipe理员可以用AJAX调用删除单个项目。 我想重新加载页面,当一个事件被删除,但我遇到了麻烦实现它与我目前的明确expression'通常需求,水库,和下一个。

这是我目前的实现(简化):

简单的jQuery代码:

$(".delete").click(function(e){ $.post("/events/delete",{del:$(this).val()}) }) 

在我的路线文件中:

 function eventCtrl(req,res){ Event.find({}).exec(function(err,events){ ... var context = { events:events, ... } res.render('events',context); }); } function deleteCtrl(req,res,next){ Event.findById(req.param("del")).exec(function(err,event){ // delete my event from google calendar ... event.remove(function(err){ ... return next(); }); }); } app.get('/events',eventCtrl); app.post('/events/delete',deleteCtrl,eventCtrl); 

当我使用AJAX发出一个POST请求时,所有的req处理程序都被调用,事件被成功删除,但没有重新加载。 我误解了什么res.render()呢?

我也尝试过在我的jQuery代码中使用成功处理程序,当我发出请求时,从deleteCtrl res.redirect(),但在这种情况下我的上下文是未定义的。

在客户端,你正在使用

 $(".delete").click(function(e){ $.post("/events/delete",{del:$(this).val()}) }) 

此代码不会指示浏览器在收到post的回复时执行任何操作。 所以浏览器中没有任何可见的

你问题不在服务器端; 服务器回答与上下文对象。 你根本就不用这个答案做任何事情。

尝试简单地添加一个成功的处理器。

一般来说,这不是一个好的做法。 你想要做的是调和数据。 如果删除成功,则只需将对象从客户端存在的数组中splice出来。 另一种方法是实际发回刷新的数据集:

 res.json( /* get the refreshed data set */ ); 

然后在客户端,在callback中,您实际上只需根据结果设置数据源(s):

 ... myCallback(res) { // refresh the data source(s) from the result }