2015-08-09 3 views
0

Я создаю веб-приложение node.js и имею функцию удаления, которая запрашивает базу данных mongo, удаляет document и затем отправляет пользователя на другую страницу.Страница не загружается после res.send()

Однако после того, как функция вызывается, новая страница не перезагружается, хотя удаляется 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); 

Я очень признателен за любую помощь, оказанную.

+0

Консоль не имеет «успеха», записанного в ней после удаления? – cDima

+0

Ваш код для обновления страницы должен быть на ** console.log ('success'); ** – Rayon

+0

hmmm ... Я немного смущен, потому что думал, что либо (1) res.send(), либо (2) $ .ajax (({type: 'GET', url: '/ students',) должен делать это. – qts

ответ

0

мне удалось получить новую страницу для загрузки, добавив команду window после готовности():

$.ajax({url: '/students/'+studentid, type: 'DELETE'}).done(function(result) { 
      if (result) { 
       $.ajax(
        {type: 'GET', 
        url:'/students', 
        success: function(){ 
         console.log('success'); 
         window.location.href='/students'; 
         } 
        } 
       ) 
      } 
      else{ 
       console.log('Unable to delete'); 
      } 
     }); 
    } 
}); 

});

0

После res.send() вызовите return next(); без параметра для запуска следующего промежуточного программного обеспечения, которое отправит статус 200 вместе со строкой/students. Только тогда обработчик done() в ajax будет триггером.

+0

Консоль возвращает «успех», поэтому я думаю, что сценарий ajax действительно работал правильно. – qts