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 beschwert, dass "erwartete Kennung" in der ersten Zeile. Der Code funktioniert gut in Firefox, Chrome, etc.

Antwort

22

Das Problem ist, dass delete ein Javascript-Schlüsselwort ist und IE8 es leicht falsch analysiert. Gemäß dem Standard können Bezeichner delete genannt werden. Eine schnelle Lösung ist:

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

Ein wenig hässlich, und ich glaube nicht, die guten Winkel Menschen genannt haben sollten diese Methode löschen, aber das behebt das Problem

2

löschen ist die JavaScript reserviertes Schlüsselwort, und IE parse es als ein Schlüsselwort. Hier ist die Lösung. http://tech.pro/tutorial/1238/angularjs-and-ie8-gotcha-http-delete

Dies ist die Javascript reserviert Keyword-Liste

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

so ist es besser $http['delete'] stattdessen zu verwenden von $http.delete

+0

Warum diese Antwort downvoted wurde? –

+0

Ich würde die Lösung als Teil der Antwort anstelle nur der URL einschließen, da der Link, den Sie gepostet haben, in Zukunft tot werden könnte. – Makotosan

+0

@Makotosan Sie sind herzlich willkommen, diese Antwort zu verbessern. :) –

3

$http.delete(path) eine Abkürzung für DELETE Anfragen ist. So wie die Verknüpfung bricht auf IE8 neben Aufruf durch ihre uglly Form: $http['delete'], können Sie den ursprünglichen Modus aufrufen:

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