0

尝试通过 Web 服务将数据发送到我的数据库并收到此错误:

Primitive values of type 'Edm.Decimal' and 'Edm.Int64' must be quoted in the payload. Make sure the value is quoted

这是我的代码:

var newEntry = {
        datum: entryDate,
        monat: parseFloat(entryMonth),
        taetigkeit: document.getElementById("addWork").value,
        total: parseFloat(document.getElementById("addTotal").value),
        totalV: parseFloat(document.getElementById("addTotalV").value),
        in_auswertung: 0,
        teil_projekt_id: parseFloat(document.getElementById("addSubProject").value),
        projekt_id: parseFloat(document.getElementById("addProject").value),
        TimeStamp: entryDate,
        sAuftraggeber: document.getElementById("addContractor").value,
        iidBenutzer: parseFloat(298),//sessionStorage.getItem("userId"),
        akt_id: parseFloat(document.getElementById("addActivity").value)
    };

    WinJS.xhr({
        type: "post",
        url: requestUrl,
        data: JSON.stringify(newEntry),
        headers: {
            "Content-type": "application/json"
        }

    }).then(
          function complete(response) {

          },

谢谢马洛

4

1 回答 1

2

至少您的一个属性的声明类型为Edm.Decimalor Edm.Int64。这些值必须以"OData 的 JSON 格式序列化为字符串(即,包含在字符中的数字)。如果您不确定属性的声明类型是什么,您可以在服务器的$metadata文档中查找实体类型(通常可在 中找到http://.../MyService.svc/$metadata)。

Edm.Int64因此,对于 or 的一个或多个属性Edm.Decimal,您可以删除对的调用parseFloat()并将其保留为字符串。

于 2013-05-14T17:37:58.477 回答