使用WinJS和OData从数据库中删除条目

时间:2013-05-16 12:04:06

标签: odata winjs

我正试图通过odata删除数据库中的条目。我收到错误消息

{“error”:{“code”:“”,“message”:{“lang”:“en-US”,“value”:“错误请求 - 查询语法错误。”}}}

我的代码:

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);
          }
       );
}

我的请求网址如下所示:

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

由于 马洛

2 个答案:

答案 0 :(得分:1)

至少我找到了解决方案:

我已向我的服务输入过滤请求,如下所示:

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

通过此链接返回了正确的条目:

TimeSheetWebservice.svc / Stundens(305221M)

因此,如果我在ID之后输入M,那么一切都有效。但我不知道这个M来自哪里。

谁能告诉我这个M的原因?它不属于ID。这是ID 305221

马洛

答案 1 :(得分:0)

您确定要与之通话的服务器是否支持$format查询选项?很多人没有。我会尝试删除请求URI的那一部分,而是修改您的headers值以指定Accept标头:

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

对于允许$format的服务器,为其提供json值相当于提供带有application/json MIME类型的Accept标头。

通常,对于DELETE操作,Accept标头或$format值仅对错误情况有用。成功DELETE后,响应有效负载正文将为空,因此服务器无需了解您的格式首选项。