2016-07-13 14 views
0
exports.deleteItem = function (req, res) 
{ 
    var query = req.params.id; 
    var cart = req.session.items; 
    var index; 

    _.each(cart,function (ticket) 
    { 
     if(ticket.id === query) 
     { 
      index = cart.indexOf(ticket); 
      cart.splice(index,1); 
     } 
     return res.redirect(303, '/cart'); 
    }); 
}; 

Ich verwende diese Funktion in meinen Routen, um eine Löschoperation durchzuführen. Es funktioniert für die ersten paar Elemente auf meiner Liste, stoppt dann plötzlich und gibt mir den Fehler "Kann Header nicht festlegen, nachdem sie gesendet werden."Problem mit der Wiedergabeseite nach dem Ausführen der Löschfunktion

$(document).ready(function() { 
    $('.delete-from-cart').click(function(event) 
    { 
     $target = $(event.target); 
     $.ajax({ 
      type: 'DELETE', 
      url: '/cart/remove/' + $target.attr('data-item-id'), 
      data: { 
       _csrf: $target.attr('data-csrf') 
      }, 
      success: function(response) 
      { 
       $target.parent().parent().remove(); 
       Materialize.toast('Ticket Removed', 4000); 
       window.location.href = '/cart'; 
      }, 
      error: function(error) 
      { 
       Materialize.toast('Error', 4000); 
       console.log(error); 
      } 
     }); 
    }); 
}); 

Antwort

0

Eine einzige Anfrage wurde gemacht, was bedeutet, dass eine einzige Antwort auftreten sollte.

Wenn Sie die _.each Funktion ausführen, rate ich, dass es funktioniert, wenn es ein Element gibt, aber fehlschlägt, wenn es mehrere gibt? Dies liegt daran, dass Sie versuchen, mehrere Antworten zu senden, wenn nur eine zulässig ist. Eine gute Erklärung dafür finden Sie hier: Error: Can't set headers after they are sent to the client

Verwandte Themen