2015-07-21 129 views
0

我有一个函数在控制器:Angularjs去除尾随斜线

$scope.deleteTodo = function(id) { 
     $http.delete('/musicians/' + id) 
      .success(function(data) { 
       $scope.todos = data; 
       console.log(data); 
      }) 
      .error(function(data) { 
       console.log('Error: ' + data); 
      }); 
    }; 

我这样称呼它:

<button class="btn btn-default" type="button" ng-click="deleteTodo(todo._id)" > 

它给404错误的URL:

http://localhost:3000/musicians55accbce27e2cd2802de4894 Failed to load resource: the server responded with a status of 404 (Not Found) 

但是,它应该是:

http://localhost:3000/musicians/55accbce27e2cd2802de4894 

我也尝试添加:

.config(['$resourceProvider', function($resourceProvider) { 
    // Don't strip trailing slashes from calculated URLs 
    $resourceProvider.defaults.stripTrailingSlashes = false; 
}]); 

但它并没有解决任何问题,我仍然有同样的问题。

这里是流称之为:

app.delete('/musicians/:id', musicians.delete); 

exports.delete = function(req, res){ 
    var id = req.params.id; 
    Musician.remove({'_id':id},function(result) { 
    return res.send(result); 
    }); 
}; 
+0

我认为这些网址是相同的 –

+0

@SimoEndre:在第二个音乐家之后有一个斜线。 –

+0

音乐家之后,你不需要逃避斜线吗? –

回答

0

不知道是什么问题,但你试图调用$http之前编译URL字符串,然后看如果解决了它?例如:

$scope.deleteTodo = function(id) { 
     var url = '/musicians/' + id; 
     $http.delete(url) 
      .success(function(data) { 
       $scope.todos = data; 
       console.log(data); 
      }) 
      .error(function(data) { 
       console.log('Error: ' + data); 
      }); 
    }; 
+0

它没有。还是一样的错误。 –

0

在黑暗中只是一个刺,但你尝试过使用原始$http方法?

$scope.deleteTodo = function(todoId) { 
    return $http({ 
     url: '/musicians', 
     method: 'DELETE', 
     data: { id: todoId } 
    }); 
} 
+0

仍然是同样的问题。 –

0

你可以尝试逃离片段:

$scope.deleteTodo = function(id) { 
    $http.delete('/musicians\\/' + id) 
     .success(function(data) { 
      $scope.todos = data; 
      console.log(data); 
     }) 
     .error(function(data) { 
      console.log('Error: ' + data); 
     }); 
}; 

不过,我会建议你重估如何调用你的删除方法。您希望调用资源项本身的删除,并且不会将资源的ID传递给catch全部删除方法。见http://docs.angularjs.org/api/ngResource/service/ $资源

+0

这也没有帮助错误。 –

+0

您可以在开发人员工具中查看实际向服务器进行的调用吗? (请参阅chrome开发人员工具>网络> XHR>单击呼叫>检查请求URL) – Marco