Microsoft Dynamics CRM 365 calling an unbounded action via JavaScript asynchronously(Microsoft Dynamics CRM 365通过JavaScript异步调用未绑定的操作)
问题描述
是否可以在不使用第三方脚本的情况下通过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中&;可以称为异步。
/api/data/v8.2/Action_Name
对于异步运行:
req.open(....., true);
使用soap call也是如此(不推荐)。
Processjs使用将被弃用的Organization.svc/web。
这篇关于Microsoft Dynamics CRM 365通过JavaScript异步调用未绑定的操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Microsoft Dynamics CRM 365通过JavaScript异步调用未绑定的操作
基础教程推荐
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- 从快速中间件中排除路由 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- HTML5 画布调整为父级 2022-01-01
