Microsoft Dynamics CRM 365通过JavaScript异步调用未绑定的操作

本教程将介绍Microsoft Dynamics CRM 365通过JavaScript异步调用未绑定的操作的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

Microsoft Dynamics CRM 365通过JavaScript异步调用未绑定的操作 教程 第1张

问题描述

是否可以在不使用第三方脚本的情况下通过javascript调用操作?

我找到了这个https://github.com/PaulNieuwelaar/processjs

但是,我不能使用第三方库。

更新:

下面是一些示例代码,它演示了通过JavaScript异步调用操作。需要记住的重要一点是使请求的open方法的最后一个参数为真。

req.open(consts.method.post, oDataEndPoint, true);

//插件

public class RunAsync : CodeActivity
 {
  [Input("input")]
  public InArgument<string> Input { get; set; }

  [Output("output")]
  public OutArgument<string> Output { get; set; }

  protected override void Execute(CodeActivityContext executionContext)
  {
try
{
 Thread.Sleep(20000);
 Output.Set(executionContext, $"Result:{Input.Get(executionContext)}"); 
}
catch (Exception e)
{
 throw new InvalidPluginExecutionException(e.Message);
}
  }
 }

//javascript

function callAction(actionName, actionParams, callback) {

 var result = null;
 var oDataEndPoint = encodeURI(window.Xrm.Page.context.getClientUrl() + consts.queryStandard + actionName);

 var req = new XMLHttpRequest();
 req.open(consts.method.post, oDataEndPoint, true);
 req.setRequestHeader(consts.odataHeader.accept, consts.odataHeader.applicationJson);
 req.setRequestHeader(consts.odataHeader.contentType, consts.odataHeader.applicationJson + ";" + consts.odataHeader.charset_utf8);
 req.setRequestHeader(consts.odataHeader.odataMaxVersion, consts.odataHeader.version);
 req.setRequestHeader(consts.odataHeader.odataVersion, consts.odataHeader.version);
 req.onreadystatechange = function () {
  if (req.readyState === 4) {
req.onreadystatechange = null;
if (req.status === 200) {
 if (callback) {
  result = JSON.parse(this.response);
  callback(result);
 }
} else {
 console.log(JSON.parse(this.response).error);
}
  }
 };
 req.send(JSON.stringify(actionParams));
}

function onLoad() {

 console.log('call action...');

 var actionParams = {
  Input: 'test1234' 
 };

 callAction('TestAsyncAction',actionParams, function(data){  console.log('action callback triggered...');
  console.log(JSON.stringify(data));
 });

 console.log('action called...'); 
}

//操作

推荐答案

您可以使用webapi to execute custom Action。这被包装在XMLHttpRequest中&amp;可以称为异步。

/api/data/v8.2/Action_Name

对于异步运行:

req.open(....., true);

使用soap call也是如此(不推荐)。

Processjs使用将被弃用的Organization.svc/web

好了关于Microsoft Dynamics CRM 365通过JavaScript异步调用未绑定的操作的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。