为什么在Dynamics 365中的html Web资源上使用http请求创建注释后,为什么会出现500 Internal Server Error?

问题描述 投票:0回答:1

用户希望通过带有使用html和javascript创建的自定义Notes视图的选项卡创建Notes(注释)。我已将以下代码添加到资源中,并且尽管创建了注释并按需要链接了事件,但是Web资源在表单上返回了500个内部服务器错误。

这里是添加的代码:

    <script>
        function addNewNote(title_b, notetext_b) {
            debugger;
            caseId = getUrlParam("id");
            console.log("Case ID: " + caseId);
            console.log("Title: " + title_b);
            console.log("NoteText: " + notetext_b);
            var entity = {};
            entity["[email protected]"] = "/incidents(" + caseId + ")";
            entity["subject"] = title_b;
            entity["notetext"] = notetext_b;

            var req = new XMLHttpRequest();
            req.open("POST", parent.Xrm.Page.context.getClientUrl() + "/api/data/v9.0/annotations", true);
            req.setRequestHeader("OData-MaxVersion", "4.0");
            req.setRequestHeader("OData-Version", "4.0");
            req.setRequestHeader("Accept", "application/json");
            req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            req.onreadystatechange = function () {
                debugger;
                if (this.readyState === 4) {
                    req.onreadystatechange = null;
                    if (this.status === 204) {
                        var uri = this.getResponseHeader("OData-EntityId");
                        var regExp = /\(([^)]+)\)/;
                        var matches = regExp.exec(uri);
                        var newEntityId = matches[1];
                    } else {
                        parent.Xrm.Utility.alertDialog(this.statusText);
                    }
                }
            };
            req.send(JSON.stringify(entity));
            parent.Xrm.Page.getControl("WebResource_NotesTabView").refresh();
        }

    </script>
    <form action="" method="get" class="form-newnote">
        <div class="form-newnote">
            <label for="sub">Title </label>
            <input type="text" size="114" name="sub" id="sub" required="true">
        </div>
        <div class="form-newnote">
            <label for="notetext">Note </label>
            <textarea name="notetext" rows="4" cols="114" id="notetext"></textarea>
        </div>
        <div class="form-newnote">
            <button onclick="addNewNote(sub.value, notetext.value)">Add Note</button>
        </div>
    </form>

单击“添加注释”之前:before

单击“添加注释”后:after

请注意,便笺已成功创建并链接到案例。

javascript html httpwebrequest dynamics-365
1个回答
0
投票

我可以感觉到2-3个问题。

  1. this.status我认为您应该在这里调试,可能您将返回200而不是204。

  2. 您正在以异步方式调用webapi,这应该不是问题,但请尝试以同步方式调用它。

  3. 如果您说注释是在控制台中创建的,则在日志跟踪中检查直到代码到达的点。

© www.soinside.com 2019 - 2024. All rights reserved.