2

我正在尝试将选项标签和选项值添加到在名为 new_servingtime 的实体上找到的选项集字段(new_contractserving)。不确定我是否正确执行此操作,但服务器抛出 400 Bad 请求,这是什么问题?!

var entity = {

                "new_contractserving": String(OptionValue),
                "new_contractserving@OData.Community.Display.V1.FormattedValue": String(OptionText)
            };

            var reqJSON = new XMLHttpRequest();
            reqJSON.open("POST", url + "/api/data/v8.2/new_servingtimes", false);
            reqJSON.setRequestHeader("OData-MaxVersion", "4.0");
            reqJSON.setRequestHeader("OData-Version", "4.0");
            reqJSON.setRequestHeader("Accept", "application/json");
            reqJSON.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            reqJSON.onreadystatechange = function () {
                if (this.readyState === 4) {
                    reqJSON.onreadystatechange = null;
                    if (this.status === 204) {
                        var uri = this.getResponseHeader("OData-EntityId");
                        var regExp = /\(([^)]+)\)/;
                        var matches = regExp.exec(uri);
                        var newEntityId = matches[1];
                    } else {
                        Xrm.Utility.alertDialog(this.statusText + ": Third Request!");
                        return;
                    }
                }
            };
            reqJSON.send(entity);

4

2 回答 2

3

HTTP 400表示不良数据。如果它是“未找到 URI”,它将是HTTP 404

HTTP 400通常意味着,您的请求(请求体)在服务器端未通过某些验证,或者它不限于POST服务器期望的格式

于 2018-09-04T20:16:35.820 回答
2

您应该使用InsertOptionValue操作将新选项添加​​到实体中的现有选项列表属性。

CRM REST Builder 是编写此类请求和测试的最佳选择。

您编写的请求可用于在记录中设置属性值,但仍然不完整。阅读此博客以了解如何执行 webapi 操作。

于 2018-09-04T22:10:52.067 回答