2016-07-19 2 views
1

Я пытаюсь исправить мою команду jQuery AJAX, где есть щелчок по <a href="#">, который вызывает запрос DELETE для конкретного URL-адреса, который у меня настроен для маршрута, а затем перенаправляется на новую страницу. Часть моего AJAX работает правильно, но по какой-то причине часть успеха интерпретирует мое перенаправление на /app как запрос DELETE. Кажется, он не распознает GET, который я установил перед URL-адресом, и по умолчанию имеет значение DELETE. Может ли кто-нибудь помочь мне определить, какая часть моего метода неверна?AJAX DELETE Метод перенаправления Не работает

Ссылка:

<a href="javascript:void(0);" id="card-delete-link"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span>DELETE</a> 

JQuery:

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#card-delete-link').click(function(){ 
       $.ajax({ 
        method: 'DELETE', 
        url: '/app/edit/{{card.cardId}}', 
        success: function(){ 
         console.log('Annotation ID: ' + '{{card.cardId}}' + ' was deleted'); 
         $.ajax({ 
          method: 'GET', 
          url:'/app' 
         }); 
        } 
       }); 
      }); 
</script> 

Browser Console:

jquery.js:8630 DELETE http://localhost:3000/app 404 (Not Found) 

Маршрут:

appRoutes.route('/edit/:cardId') 
    .delete(function(req, res){ 
     models.Card.destroy({ 
      where: { 
       userId: req.user.userId, 
       cardId: req.params.cardId   
      } 
     }).then(function(){ 
      res.redirect('/app'); 
     }); 
    }); 
+0

попробуйте добавить обработчик 'error:' для обоих вызовов, возможно, что-то там ...? – WhiteHat

ответ

0

В node.js вы используете .delete verb, это означает, что он будет игнорировать все запросы, кроме тех, которые имеют метод DELETE, указанный в заголовках. Вот почему ваш запрос GET не обрабатывается. Таким образом, вы можете легко перенаправить успех с window.location.replace(), не делая второго запроса на сервер. С другой стороны, если сделать второй запрос является критическим, просто создать новый маршрут

Пример:

app.get('/', function (req, res) { 
    res.send('GET request to the homepage'); 
}); 

Кроме того, вы должны пересмотреть свой код, потому что вы не сможете перенаправить с помощью AJAX запрос.

+0

Спасибо, что ответ был очень проницательным. Я понимаю, что вы говорите, но что бы вы посоветовали вне запроса ajax? Я чувствую, что '.delete' является наилучшей практикой для удаления записи базы данных, но проблема в том, что я не могу понять, как использовать элемент HTML для запуска этого метода без ajax. Я чувствую, что как только это будет достигнуто, тогда перенаправление на моем маршруте будет работать. Какие-либо предложения? – cphill

+0

Внутри успеха: function() {}, после console.log() и вместо $ .ajax просто напишите window.location.replace ('/ app') –

Смежные вопросы