這是在前面練習的基礎上繼續學習發出的心得。在頁面刷出數據後想對某些內容執行刪除操作,這裏用到jquery的ajax,通過ajax傳入一個唯一的值,比如collection裏面的_id,然後在node處理程序裏面接收這個參數,調用remove方法執行刪除操作。具體代碼如下:
1、我的ajax代碼是寫在一個頁面當中。
$('.my-delete').click(function(){
var id=$(this).attr("data-id"); //在頁面當中我直接把數據的_id值刷出來賦給data-id
$.ajax({
type:'post',
url:"/msgDelete",
data:{id:id},
success:function(data){ //以我的寫法,這裏success是沒有執行到的,直接跑到message處理程序,成功刪除就over了
if(data){
console.log('成功了啊');
} else{
console.log("返回值爲空");
}
}
});
})
這裏處理url爲"/msgDelete",因此需要修改app.js添加msgDelete的處理事件,我是在當前頁執行刪除操作,因此轉向頁面也是當前頁。
app.get('/msgDelete',message.del);
app.post('/msgDelete',message.delMsg);
修改mesage.js裏面的del和delMsg方法如下所示。exports.del = function (req,res){
res.render('home',{title:'Delete Message'})
}
exports.delMsg = function (req,res){
msgModel.remove({_id:req.body.id},function(err,data){
if(!err){
res.send('true');//刪除成功後返回true用於前端ajax的success函數接收的data,這裏send的數據格式可以根據需要自己定義
}else{
res.send('false');
}
})
}
這裏的delMsg是真是實現刪除操作的過程,remove()方法的兩個參數,第一個是條件,第二個是回調函數,這裏我要刪除指定一條id的數據,通過req.body.id來獲取前面頁面ajax傳入的參數,刪除完成之後,重新調用find方法查找數據庫的數據,看看結果是不是正確的,docs爲返回的數組列。
具體什麼刪除之後,相要把這個刪除的隱藏啊之類的就不寫了,需要的自己研究,反正返回值都已經給出來了。