我昨天发布的类似问题的后续跟进。我试图从Azure应用程序服务中的表中删除数据。这是我在Angular文件中的功能。
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>
这是我的标头变量的值:
var config = {
headers: {
'Access-Control-Allow-Origin':'*',
'ZUMO-API-VERSION': '2.0.0'
}
};
但是当我尝试运行它时,控制台会返回以下错误:
表示必须指定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服务器以检索传递所需参数的ID。 ID将以字符串文字形式返回,但采用JSON格式。然后我调用JSON.parse将字符串解析为JSON对象,然后将ID分配给我在URL中附加的变量。 -
在我编写Web方法之后,现在这是我的删除功能。
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的一种方法。但我不知道这是否是最佳的。无论如何,这对我有用,除非有其他建议。
答案 0 :(得分:1)
delete(url, [config]);
只有一个参数(config),而不是两个(data,config)。
post(url, data, [config]);
VS
/tables/tablename/:id
至于您更新的问题:
要从表格中删除某个项目,会显示正确的网址:
:
请注意ID之前的create or replace trigger trig1
before update
of sal
on emp
for each row
when (new.sal < old.sal)
declare
user_xcep EXCEPTION;
PRAGMA EXCEPTION_INIT( user_xcep, -20001 );
begin
raise user_xcep;
end;
/
。