通过Javascript调用自定义操作时出现错误的请求错误
我在CRM 365上创建了一个自定义操作,该操作有一个entity reference类型的输入参数,它引用用户实体,我尝试将输入参数更改为另一个类型,效果很好。所以我认为问题在于我传递实体引用值的方式,我试图改变它,但我没有任何运气,所以有人能告诉我下面代码中的错误是什么吗通过Javascript调用自定义操作时出现错误的请求错误,javascript,dynamics-crm,dynamics-crm-365,Javascript,Dynamics Crm,Dynamics Crm 365,我在CRM 365上创建了一个自定义操作,该操作有一个entity reference类型的输入参数,它引用用户实体,我尝试将输入参数更改为另一个类型,效果很好。所以我认为问题在于我传递实体引用值的方式,我试图改变它,但我没有任何运气,所以有人能告诉我下面代码中的错误是什么吗 函数CreateBlockHistory(){ var Id=Xrm.Page.data.entity.getId(); Id=Id.replace(“{,”).replace(“},”); 风险值数据={ “封锁者”:
函数CreateBlockHistory(){
var Id=Xrm.Page.data.entity.getId();
Id=Id.replace(“{,”).replace(“},”);
风险值数据={
“封锁者”:{
“ohd_blockedby”:Xrm.Page.context.getUserId().replace(“}”和“”).replace(“{”和“”),
@odata.type:“Microsoft.Dynamics.CRM.systemuser”
}
};
var serverURL=window.parent.Xrm.Page.context.getClientUrl();
var req=新的XMLHttpRequest();
请求打开(“POST”,serverURL+”/api/data/v8.1/new_units(“+Id+”)/Microsoft.Dynamics.CRM.ohd_ActionTest”,false);
请求setRequestHeader(“接受”、“应用程序/json”);
setRequestHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
请求setRequestHeader(“OData MaxVersion”,“4.0”);
请求setRequestHeader(“OData版本”、“4.0”);
req.onreadystatechange=函数(){
如果(this.readyState==4/*请求已完成*/){
req.onreadystatechange=null;
if(this.status==200/*响应就绪*/){
var data=JSON.parse(this.response);
}
否则{
var error=JSON.parse(this.response).error;
}
}
};
请求发送(window.JSON.stringify(数据));
}
400错误请求开始
-这是一个非常普遍的无用错误,不要依赖于此-尝试在浏览器控制台或CRM REST Builder中运行相同的代码段,方法是传递硬编码的guid参数以查看执行状态。你也可以调试XMLHttpRequest
正在运行同步(bool param为false),请将其切换到Async&请参阅Xrm
上下文,例如window.parent
有时&有时直接window.JSON也可以。如果这是在web资源中执行的,而不是以任何实体形式执行的,那么请适当地修复它
我看到您同时使用了Xrm和window.parent.Xrm—您能验证预期值是否会出现吗?还可以尝试使用单数实体名称new\u Unit您是否尝试过使用
Xrm.WebApi
?我确保表单中的值正确无误,实体名称正确无误,因为当我尝试更改参数类型时,它运行良好,我建议您使用CRM REST Builder来构建查询、执行和测试。