用户希望通过带有使用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
请注意,便笺已成功创建并链接到案例。
我可以感觉到2-3个问题。
this.status我认为您应该在这里调试,可能您将返回200而不是204。
您正在以异步方式调用webapi,这应该不是问题,但请尝试以同步方式调用它。
如果您说注释是在控制台中创建的,则在日志跟踪中检查直到代码到达的点。