2015-07-21 131 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