angularjs $ http.delete打破了ie8

时间:2014-10-21 04:51:39

标签: javascript angularjs internet-explorer-8

$http.delete('/api/carts/' + productCode).
  success(function() {
    cart.products = someMethod();

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

IE8在第一行抱怨“预期标识符”。该代码在Firefox,Chrome等中运行良好。

3 个答案:

答案 0 :(得分:23)

问题是delete是一个javascript关键字,IE8稍微错误地解析它。根据标准,标识符可以称为delete。快速解决方法是:

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

有点难看,我不认为好角度的人应该将该方法命名为删除,但这可以解决您的问题

答案 1 :(得分:3)

$http.delete(path)DELETE请求的快捷方式。 因此,当IE8上的快捷方式中断时,除了通过他们的uglly形式调用$http['delete']之外,您还可以使用原始模式进行调用:

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

答案 2 :(得分:2)

delete是JavaScript保留关键字,IE将其解析为关键字。 这是解决方案。 http://tech.pro/tutorial/1238/angularjs-and-ie8-gotcha-http-delete

这是javascript保留关键字列表

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

因此最好使用$http['delete']代替$http.delete