【发布时间】:2015-08-15 04:19:36
【问题描述】:
我有一个列出事件的页面,管理员可以在其中通过 AJAX 调用删除单个项目。我想在删除事件时重新加载页面,但是根据我目前对 express' 通常的 req、res 和 next 的理解,我无法实现它。
这是我当前的实现(简化):
简单的 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 发出发布请求时,所有请求处理程序都被调用,事件被成功删除,但没有重新加载。我是否误解了 res.render() 的作用?
当我发出 post 请求时,我也尝试在我的 jQuery 代码中使用成功处理程序,使用来自 deleteCtrl 的 res.redirect(),但在这种情况下我的上下文未定义。
【问题讨论】: