快速重新加载新的上下文页面
我有一个列出事件的页面,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 }
- 使用Express的Nodejs – 将mongoDB和mongoose添加到package.json并运行npm install时出错
- Express jsredirectcookies不发送
- 在快速应用程序中处理MySQL数据库连接的模式
- 为什么Node fs.writeFile()方法成功,但是一个空文件然后被发送到浏览器?
- AngularJS $ http.delete和$ window.location.reload()
- 在JavaScript中的ValueOf()
- 使用Q使用Node.js服务器链接数据库查询
- SailsJS使用CSRF查看图层分隔
- 如何获取通过sails.js中的窗体发送的数组/对象(使用enctype multipart / form-data)