2017-11-03 10 views
0

昨日投稿した同様の質問のフォローアップ。 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' 
    } 
}; 

しかし、私はそれを実行しようとしたとき、コンソールは次のように返します。エラー:

enter image description here

は、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つの方法です。しかし、それが最適かどうかはわかりません。いずれにせよ、それは他の提案がない限り、私のために働く。

+0

デベロッパーコンソール(ネットワークタブ)を見て、バージョンが実際に削除通話に渡されたことを確認しましたか? –

+0

私のコードを編集して、バージョンが確実に渡されるようにしました。しかし、私はこの時間にエラー500が発生しています: "エラー": "近くに構文がありません。";それは郵便配達で実行したときのエラーです。 – Joseph

+0

あなたのサーバー側に情報がないので、ユーザーを渡すことによってテーブルの一部を削除しようとしています。これを行うには、何らかのSQLクエリにユーザーを注入しています。削除は1つのパラメータしか持たないため、コンテンツを「削除」に渡すことはできません。 –

答えて

1

$http.deleteには、2つではなく1つのパラメータ(config)のみがあります(data、config)。

Delete API

delete(url, [config]);

対あなたの更新問題へ

Post API

post(url, data, [config]);


があなたのテーブルから項目を削除するには、それが正しいURLは表示されます。

/tables/tablename/:id 

注意idの前の:

関連する問題