2014-12-26 3 views
0

Я получаю ошибку, что означает, что он не будет выполнять мой метод удаления от углового:DELETE в angularjs - 405 Метод не допускаются

DELETE http://localhost:49717/api/Item?iid=D1 405 (Method Not Allowed) 

Моего app.js

'use strict'; 

var SalesApp = angular.module('SalesApp', ['ngRoute', 'ngResource']). 
    config(['$routeProvider', function ($routeProvider) { 
     $routeProvider. 
      when('/', { controller: ItemCtrl, templateUrl: 'item.html' }). 
      when('/new', { controller: CreateCtrl, templateUrl: 'details.html' }). 
      when('/edit/:editId', { controller: EditCtrl, templateUrl: 'details.html' }). 
      otherwise({ redirectTo: '/' }); 
    }]); 

SalesApp.factory('Item', function ($resource) { 
    return $resource('/api/Item/:id', { id: '@id' }, { update: { method: 'PUT' } }); 
}); 




var ItemCtrl = function ($scope, $location, Item) {  

    $scope.delete = function() { 
     var id = this.item.iid; 
     Item.delete({ iid: id }), function() { 
      $('#item_' + id).fadeOut(); 
     }; 
    }; 
}; 

подхода щей части HTML-код в index.html

<tbody> 
     <tr ng-repeat="item in items" id="item_{{item.iid}}"> 
      <td>{{item.iid}}</td> 
      <td>{{item.name}}</td> 
      <td>{{item.price}}</td> 
      <td><a ng-click="delete()">X</a></td> 
      <td><a href="#/edit/{{item.iid}}"><div class="edit">Edit</div></a></td> 
     </tr> 
    </tbody> 

И мой сценарий импорта:

<script src="Scripts/jquery-1.9.1.js"></script> 
    <script src="Scripts/angular.js"></script> 
    <script src="Scripts/angular-resource.js"></script> 
    <script src="Scripts/app.js"></script> 
    <script src="Scripts/angular-resource.js"></script> 
    <script src="Scripts/angular-sanitize.js"></script> 
    <script src="Scripts/angular-animate.js"></script> 
    <script src="Scripts/angular-touch.js"></script> 
    <script src="Scripts/angular-route.js"></script> 

Возможно, это глупость, я не совсем уверен, что работает надстройка и обновление? Моя первая мысль заключалась в том, что это может быть какой-то внешний ключ, но я пытался удалить элемент с использованием SQL-сервера, и он работал нормально.

Добавлено фоновый:

// DELETE api/Item/5 
     [ResponseType(typeof(Item))] 
     public IHttpActionResult DeleteItem(string id) 
     { 
      Item item = db.Item.Find(id); 
      if (item == null) 
      { 
       return NotFound(); 
      } 

      db.Item.Remove(item); 
      db.SaveChanges(); 

      return Ok(item); 
     } 
+3

Это означает, что ваш веб-сервер не в состоянии поддерживать этот УДАЛИТЬ метод запроса. Вы либо настраиваете его, либо используете POST. – dfsq

+0

Создайте и отправьте запрос (удалите по указанному URL-адресу) с помощью скрипача, и вы увидите там эту ошибку. Я имею в виду, что что-то неправильно в задней системе. Пожалуйста, предоставьте некоторые детали из кода сервера. –

+0

Добавлено backend now – btmach

ответ

0

Вам нужно будет поместить следующий код перед вашей $http({url:"your-url-here",method:"DELETE",params:{your-parameters}}) линии, чтобы убедиться, что DELETE работы.

$http.defaults.headers["delete"] = { 'Content-Type':'application/json,charset=utf-8' };