如何获取结果中XMLHttpRequest的属性值

How to Get Attribute Value of XMLHttpRequest in Results

我有以下 Microsoft Dynamics 相关的 XMLHttpRequest javascript 函数,在尝试检索返回记录的实体属性时遇到问题。

记录成功创建,尽管条件应该阻止它。很可能是我的以下陈述导致了这个问题:

var result1 = results.results[0];

alert("result1: " + result1.id); //Not displayed

function DisableInvalidRecordCreation(context) {

    var saveEvent = context.getEventArgs();
    var idNumber= Xrm.Page.getAttribute("IDNumber").getValue();
    var category= Xrm.Page.getAttribute("Category").getValue();
    var id = Xrm.Page.data.entity.getId();

    var req = new XMLHttpRequest();
    req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.0/ccc_cases?$select=IDNumber&$filter=IDNumber eq '" + idNumber+ "' and statecode eq 0", false);
    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.setRequestHeader("Prefer", "odata.include-annotations=\"*\",odata.maxpagesize=1");
    req.onreadystatechange = function () {
        if (this.readyState === 4) {
            req.onreadystatechange = null;
            if (this.status === 200) {
                var results = JSON.parse(this.response);
                if (results.value.length > 0 && id == "") {
                    alert(results.value.length); //Displayed as 1
                    var result1 = results.results[0];
                    alert("result1: " + result1.id); //Not displayed
                    for (var i = 0; i < results.entities.length; i++) {
                        var returned_category= results.entities[i]["Category"];
                        alert(returned_category); //Not displayed
                        if (category == 100000003 && returned_category!= 100000003)
                        {
                            alert("Invalid record");
                            saveEvent.preventDefault();
                        }
                    }
                }
            } else {
                Xrm.Utility.alertDialog(this.statusText);
            }
        }
    };
    req.send();
}

发生这种情况是因为在您的获取请求中,您只选择了 IDNumber 字段,而不是您想要的 Category

 req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.0/ccc_cases?$select=IDNumber&$filter=IDNumber eq '" + idNumber+ "' and statecode eq 0", false);

也不应该是var result1 = results.results[0]; 而应该是 var result1 =results.value[0]

供参考的示例代码片段

if (this.readyState === 4) {
        req.onreadystatechange = null;
        if (this.status === 200) {
            var results = JSON.parse(this.response);
            for (var i = 0; i < results.value.length; i++) {
                var abc = results.value[i]["abc"];
                var xyz = results.value[i]["xyz"];
                var pqr = results.value[i]["pqr"];
                var pqr_formatted = results.value[i]["pqr@OData.Community.Display.V1.FormattedValue"];
            }
        } else {
            Xrm.Utility.alertDialog(this.statusText);
        }
         }