我正试图通过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"
由于 马洛
答案 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
后,响应有效负载正文将为空,因此服务器无需了解您的格式首选项。