AngularJS$http.delete在Azure应用程序服务中不起作用

AngularJS$http.delete在Azure应用程序服务中不起作用,angularjs,azure,Angularjs,Azure,对我昨天发布的一个类似问题的跟进。我正在尝试从Azure应用程序服务中的表中删除数据。这是我在角度文件中的函数 function delName(user) { //$scope.categories.push(user); alert("about to delete. Action cannot be undone. Continue?") $http.delete('https://test-evangelists-1.azurewebsites.net/tables/people'

对我昨天发布的一个类似问题的跟进。我正在尝试从Azure应用程序服务中的表中删除数据。这是我在角度文件中的函数

function delName(user) {
 //$scope.categories.push(user);
 alert("about to delete. Action cannot be undone. Continue?")
 $http.delete('https://test-evangelists-1.azurewebsites.net/tables/people', user, config)
   .then(function (res) {
       $scope.getNames();
   });
}
然后我添加了一个HTML按钮:

<button id="btn-del-evangelist" class="btn btn-default btn" ng-click="delName(user);">Delete User</button>
但当我尝试运行它时,控制台返回以下错误:

其中说明必须指定ZUMO-API-VERSION的标头

下面是我的GET和POST代码

获取:

    function getNames() {
      $http.get('https://test-evangelists-1.azurewebsites.net/tables/people', config)
   .then(function (res) {
       console.log(res);
       $scope.people = res.data;
   });
  }
发布

 function addName(user){
     //$scope.categories.push(user);
     alert("about to post!")
     $http.post('https://test-evangelists-1.azurewebsites.net/tables/people', user, config)
       .then(function (res) {
           $scope.getNames();
       });
 }
因为我已经在我的变量中指定了头,我想知道这里会有什么错误。任何帮助都将不胜感激

更新: 我发现在执行删除之前,必须将Id附加到URL。但是,我需要运行GET来检索给定参数的ID,但是在获取ID时仍然会遇到错误

这是我的删除功能

 function delName(user) {

     alert("About to delete. Action cannot be undone. Continue?")
     var retrievedId = "";

     $http.get('https://test-evangelists-1.azurewebsites.net/tables/people', {
         params: { name: user.name, location: user.location },
         headers: { 'Access-Control-Allow-Origin': '*', 'ZUMO-API-VERSION': '2.0.0' }
     })
        .then(function (res) {
            retrievedId = res.id;
            alert(retrievedId);
        });


     $http.delete('https://test-evangelists-1.azurewebsites.net/tables/people/' + retrievedId, config)
       .then(function (res) {
           $scope.getNames();
       });

 }
有人知道获取ID时GET命令中的错误吗

更新2:我编写了一个Web方法(asmx),它将连接到SQL server以检索传递所需参数的ID。ID将作为字符串文本返回,但为JSON格式。然后我调用JSON.parse将字符串解析为JSON对象,然后将ID分配给我在URL中附加的变量

这是我在编写Web方法之后的Delete函数

 function delName(user) {
        var confirmres = confirm("You are about to delete this record. Action cannot be undone. Continue?");
        var retrievedId = "";

        if (confirmres == true) {
            //get the ID via web service
            $http.get('\\angular\\EvangelistsWebService.asmx/GetId', {
                params: { name: user.name, location: user.location },
                headers: { 'Access-Control-Allow-Origin': '*', 'ZUMO-API-VERSION': '2.0.0' },
                dataType: "json",
                contentType: "application/json; charset=utf-8"
            })
               .then(function (res) {
                   $scope.retData = res.data;
                   var obj = JSON.parse($scope.retData);
                   angular.forEach(obj, function (item) {
                       if (item.length == 0)
                           alert('No data found');
                       else {
                           //perform delete after getting the ID and append it to url
                           $http.delete('https://test-evangelists-1.azurewebsites.net/tables/people/' + item.id, config)
                             .then(function (res) {
                                 $scope.getNames();
                             });
                           alert(item.id + ' deleted');
                       }
                   });
               });
        }
    }

这是我学到的在AngularJS上调用HTTP DELETE的一种方法。但我不知道这是否是最佳方案。在任何情况下,这对我都有效,除非有其他建议。

$http.delete
只有一个参数(配置),而不是两个参数(数据、配置)

delete(url[config])

vs

post(url,数据,[config])


更新后的问题:

    function getNames() {
      $http.get('https://test-evangelists-1.azurewebsites.net/tables/people', config)
   .then(function (res) {
       console.log(res);
       $scope.people = res.data;
   });
  }
要从表中删除项目,正确的url为:

 /tables/tablename/:id

请注意id之前的

您是否查看开发人员控制台(网络选项卡)以验证在删除调用中是否确实传递了版本?我编辑了代码以确保传递了版本。然而,这次我得到一个错误500:“错误”:“;”附近的语法不正确。这也是我在Postman.Wild guess中运行它时的错误,因为您的服务器端没有信息:您试图通过传递用户来删除表的一部分。为此,您将用户注入某种sql查询中。现在您无法将内容传递给“delete”,因为delete只有一个参数,而用户现在没有被传递。如果需要更多帮助,您需要提供更多信息。我根据所学内容更新了删除功能。请参见上文。您的后端看起来如何?这个请求乍一看很好