上篇介绍web api调用自定义action中用到的demo是基于特定的实体,那本篇要分享的是global action,区别在于一个是私有方法一个是公用方法(个人理解的说法)。
如何新建一个action这里就不说了,具体参见上篇,直接看下前端js的调用代码,与上篇的示例代码的区别是request的url的最后部分,global action直接写上action的唯一名称即可,而上篇基于实体的写法是这样的"incidents(03AE5852-6EFA-E511-9417-E2BFEC45B344)/Microsoft.Dynamics.CRM.new_testaction"
var entity = new Object();返回的结果依旧是200,没什么差别
entity["Money1"] = 1;
entity["Money2"] = 2;
var req = new XMLHttpRequest()
req.open("post", "http://121.40.75.24:5555/Origin/api/data/v8.0/new_action", 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) {
if (this.status == 200) {
var result=JSON.parse(this.responseText);
}
else {
}
}
};
req.send(JSON.stringify(entity))
global action注册的时候是这样的,在entity那块选择空
global action和基于实体的action还有一个区别在于后端的代码,InputParameters中是否有Target这个参数
下图是基于实体的action是有Target参数的,带的是实体的相关信息
下图是global的,是没有Target参数的,这个要区别对待下。