我在使用Dynamics CRM中的JavaScript调用全局自定义操作时遇到问题。
In CRM I created this global action that takes an in parameter and returns an out parameter。我已经确认该动作已激活且有效。当我尝试使用JavaScript调用它时出现问题。
我的JavaScript代码如下:
callCustomAction: function (actionName, actionParameters) {
var result = null;
var req = new XMLHttpRequest();
req.open("POST", encodeURI(Xrm.Page.context.getClientUrl() + "/api/data/v8.2/" + actionName), 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) {
req.onreadystatechange = null;
if (this.status == 200) {
result = JSON.parse(this.response);
} else {
var error = JSON.parse(this.response).error;
alert(error.message);
}
}
};
req.send(window.JSON.stringify(actionParameters));
return result;
}
现在,对我而言,这看起来是正确的,但我遇到了一个URL的问题,目前这个问题无处可去。在任何地方,我看到全局操作的URL只是组织URL,后跟" /api/data/v8.2 /"和我的行动的名称,但对我来说,它没有工作,我无法弄清楚为什么。
解决 问题是使用EntityReferences和字符串的混合作为输出参数,这使得我的操作不会显示在元数据下
答案 0 :(得分:0)
使用Web API调用具有关联输出参数的全局操作。对于没有输出参数的操作,情况并非如此。
这是因为有时状态代码为200,有时会有所不同。我们注意到了这个错误并且发现只有具有输出参数的操作才会发生。此外,我们注意到这种情况在某些时候发生,并且不经常发生,因为有时您会得到输出但有时不会。
作为一种解决方法,您需要使用传统的SOAP查询并执行工作流,然后解析响应。
希望MS很快解决这个问题