首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未触发XMLHTTPRequest onReadyStateChange

未触发XMLHTTPRequest onReadyStateChange
EN

Stack Overflow用户
提问于 2020-08-07 09:27:11
回答 1查看 62关注 0票数 0

我正在实现XMLHTTPRequest,但无法触发onreadystatechange函数。

我可以知道如何对其进行故障排除吗?谢谢。

代码语言:javascript
复制
function DisableDuplicateModuleCreation(context) {
    debugger;
    var saveEvent = context.getEventArgs();
    var user_userid= Xrm.Page.getAttribute("user_userid").getValue();
    var req = new XMLHttpRequest();
    req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.0/modules?$select=user_userid&$filter=user_userid eq '" + user_userid + "' and statecode eq eq", 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 () { //last stop of this code and jumps to the end without going into function
        if (this.readyState === 4) {
            req.onreadystatechange = null;
            if (this.status === 200) {
                var results = JSON.parse(this.response);
                alert("results.entities.length: " + results.entities.length);
                if (results.entities.length > 0) {
                    alert("Module failed to create due to an existing module for User ID " + user_userid + ". Please update the existing module.");
                    saveEvent.preventDefault();
                }
            } else {
                Xrm.Utility.alertDialog(this.statusText);
            }
        }
    };
} //jumps to end of code after => req.onreadystatechange = function () from above
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-07 17:42:05

您已经创建了req.send(); / object req,但尚未发送此对象,您缺少var

下面是一个示例XMLHttpRequest

代码语言:javascript
复制
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.0/accounts?$select=address2_county&$filter=accountid eq 1234567899", 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=\"*\"");
req.onreadystatechange = function() {
    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 address2_county = results.value[i]["address2_county"];
            }
        } else {
            Xrm.Utility.alertDialog(this.statusText);
        }
    }
};
req.send();

如果我可以更进一步并建议,尝试使用Xrm.Webapi来执行webapi请求。微软极力推荐使用Xrm.Webapi

注意:Xrm.Webapi是异步的,您可能希望使用promise使其像Sync/那样工作,或者等待请求完成

代码语言:javascript
复制
Xrm.WebApi.online.retrieveMultipleRecords("account", "?$select=address2_county&$filter=accountid eq 1234567899").then(
    function success(results) {
        for (var i = 0; i < results.entities.length; i++) {
            var address2_county = results.entities[i]["address2_county"];
        }
    },
    function(error) {
        Xrm.Utility.alertDialog(error.message);
    }
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63293930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档