AngularJS$http.delete在Azure应用程序服务中不起作用
对我昨天发布的一个类似问题的跟进。我正在尝试从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'
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只有一个参数,而用户现在没有被传递。如果需要更多帮助,您需要提供更多信息。我根据所学内容更新了删除功能。请参见上文。您的后端看起来如何?这个请求乍一看很好