昨日投稿した同様の質問のフォローアップ。 Azure Appサービスのテーブルからデータを削除しようとしています。これは私の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
GETのために私のコードです:私は、私は疑問に思う、私の変数でヘッダーをすでに指定しているので
function getNames() {
$http.get('https://test-evangelists-1.azurewebsites.net/tables/people', config)
.then(function (res) {
console.log(res);
$scope.people = res.data;
});
}
POST
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コマンドで間違っているものを知っていますか?
UPDATE 2:代わりに、必要なパラメータを渡すIDを取得するためにSQLサーバーに接続するWebメソッド(asmx)を記述しました。 IDは文字列リテラルとしてJSON形式で返されます。次に、JSON.parseを呼び出してJSONオブジェクトに文字列をパースし、URLに追加した変数にIDを割り当てました。 -
これは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を呼び出す方法について私が学んだ1つの方法です。しかし、それが最適かどうかはわかりません。いずれにせよ、それは他の提案がない限り、私のために働く。
デベロッパーコンソール(ネットワークタブ)を見て、バージョンが実際に削除通話に渡されたことを確認しましたか? –
私のコードを編集して、バージョンが確実に渡されるようにしました。しかし、私はこの時間にエラー500が発生しています: "エラー": "近くに構文がありません。";それは郵便配達で実行したときのエラーです。 – Joseph
あなたのサーバー側に情報がないので、ユーザーを渡すことによってテーブルの一部を削除しようとしています。これを行うには、何らかのSQLクエリにユーザーを注入しています。削除は1つのパラメータしか持たないため、コンテンツを「削除」に渡すことはできません。 –