【问题标题】:Bad request error when calling a custom action through Javascript通过 Javascript 调用自定义操作时出现错误的请求错误
【发布时间】:2019-05-04 06:55:01
【问题描述】:

我在 CRM 365 上创建了一个自定义操作,它有一个实体引用类型的输入参数,它引用用户实体,我尝试将输入参数更改为另一种类型,并且效果很好。所以我认为问题出在我传递实体参考值的方式上,我试图改变它但我没有运气所以有人可以告诉我下面的代码有什么问题吗?

function CreateBlockHistory() {
    var Id = Xrm.Page.data.entity.getId();
    Id = Id.replace("{", "").replace("}", "");
    var data = {
        "BlockedBy": {
            "ohd_blockedby": Xrm.Page.context.getUserId().replace("}", "").replace("{", ""),
            "@odata.type": "Microsoft.Dynamics.CRM.systemuser"
        }
    };
    var serverURL = window.parent.Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest();
    req.open("POST", serverURL + "/api/data/v8.1/new_units(" + Id + ")/Microsoft.Dynamics.CRM.ohd_ActionTest", false);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.onreadystatechange = function () {
        if (this.readyState == 4 /* request completed */) {
            req.onreadystatechange = null;
            if (this.status == 200 /* response ready */) {
                var data = JSON.parse(this.response);
            }
            else {
                var error = JSON.parse(this.response).error;
            }
        }
    };
    req.send(window.JSON.stringify(data));
}

【问题讨论】:

  • 我看到您同时使用了 Xrm 和 window.parent.Xrm - 您能否验证预期值是否会出现?也可以尝试单数实体名称 new_unit
  • 你试过使用Xrm.WebApi吗?
  • 我确保形成值并且它们应该是正确的,实体名称是正确的,因为当我尝试更改参数类型时它运行良好,
  • 我建议您使用 CRM REST Builder 来构建查询、执行和测试。

标签: javascript dynamics-crm dynamics-crm-365


【解决方案1】:
  1. 400 Bad request 开始 - 这是一个非常一般的无用错误,而不是依赖于此 - 尝试通过传递硬编码的 guid 参数在浏览器控制台或 CRM REST Builder 中运行相同的 sn-p 以查看执行状态。你也可以调试
  2. 我看到您的 XMLHttpRequest 正在同步运行(bool 参数为 false),请将其切换为异步并查看
  3. 另外,我看到您使用混合方法(例如 window.parent)有时和有时直接获取 Xrm 上下文。 window.JSON 也是。如果这是在 Web 资源中执行而不是以任何实体形式执行,则适当修复它
  4. 您可以在该自定义操作消息、配置文件/调试中注册插件并查看任何线索

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    相关资源
    最近更新 更多