2014-10-21 8 views
14
$http.delete('/api/carts/' + productCode). 
    success(function() { 
    cart.products = someMethod(); 

    updateTotals(); 
    }). 
    error(function() { 
    console.log('Could not remove product from card: ' + productCode); 
    }); 

IE8 lamenta che "identificatore previsto" sulla prima riga. Il codice funziona bene in Firefox, Chrome, ecc.

risposta

22

Il problema è che delete è una parola chiave javascript e IE8 lo analizza leggermente in modo errato. Secondo lo standard, gli identificatori possono essere chiamati delete. Una soluzione rapida è:

$http['delete']('/api/carts/' + productCode) 

un po 'brutto, e non credo che la buona gente angolari dovrebbero hanno chiamato questo metodo delete, ma che risolve il problema

2

cancellare è riservata parola chiave del JavaScript e IE lo analizza come una parola chiave. Ecco la soluzione. http://tech.pro/tutorial/1238/angularjs-and-ie8-gotcha-http-delete

Ecco il javascript riservato elenco di parole chiave

http://www.w3schools.com/js/js_reserved.asp

per cui il suo meglio usare $http['delete'] invece di $http.delete

+0

Perché questa risposta è stata downvoted? –

+0

Includerei la soluzione come parte della risposta anziché solo l'URL, poiché il collegamento che hai postato potrebbe diventare morto in futuro. – Makotosan

+0

@Makotosan siete i benvenuti per migliorare questa risposta. :) –

3

$http.delete(path) è una scorciatoia per DELETE richieste. Così come le interruzioni di scelta rapida sulla IE8, oltre che chiama per la loro forma uglly: $http['delete'], è possibile chiamare utilizzando la modalità originale:

$http({method: 'DELETE', url: path})