0

odata でデータベースからエントリを削除しようとしています。エラーメッセージが表示されます

{"error":{"code":"","message":{"lang":"en-US","value":"Bad Request - クエリ構文のエラー。"}}}

私のコード:

function deleteMonthEntry() {

    var item = actMonthEntries.getItem(listIndex);
    var queryString = "Stundens(" + item.data.datensatz_id + ")?$format=json";
    var requestUrl = serviceUrl + queryString;

    WinJS.xhr({
        type: "delete",
        url: requestUrl,
        headers: {
            "Content-type": "application/json"
        }
    }).done(
          function complete(response) {

          },
          function (error) {
              console.log(error);
          }
       );
}

私のリクエスト URL は次のようになります。

    requestUrl = "http://localhost:51893/TimeSheetWebservice.svc/Stundens(305233)?$format=json"

ありがとうマーロウ

4

2 に答える 2

1

少なくとも私は解決策を見つけました:

次のように、サービスにフィルター リクエストを入力しました。

TimeSheetWebservice.svc/Stundens?$filter=datensatz_id eq 305221

これにより、次のリンクで正しいエントリが返されました。

TimeSheetWebservice.svc/Stundens(305221M)

したがって、ID の後に M を入力すると、すべて正常に動作します。しかし、このMがどこから来たのか私にはわかりません。

このMの理由を誰か教えてください。IDには属しません。IDはこの305221です

マーロウ

于 2013-05-21T13:11:38.520 に答える
0

通信しているサーバーが$formatクエリ オプションをサポートしていることは確かですか? 多くの人はしません。リクエスト URI のその部分を削除して、代わりにheaders値を変更して Accept ヘッダーを指定します。

headers: {
    "Content-Type": "application/json",
    "Accept": "application/json"
}

$formatが許可されているサーバーの場合、json値を指定することは、Accept ヘッダーにapplication/jsonMIME タイプを指定することと同じです。

一般に、DELETE操作の場合、Acceptヘッダーまたは$format値はエラーの場合にのみ重要です。が成功DELETEすると、応答ペイロードの本文は空になるため、サーバーが形式設定を知る必要はありません。

于 2013-05-16T17:02:57.287 に答える