我正在使用Microsoft Dynamics CRM。该页面打开一个带有webresource的弹出窗口。我传递URL的参数,我需要让他们使用javascript。 有代码:
function open() {
var dataItemValue = Xrm.Page.data.entity.getId();
Xrm.Utility.openWebResource("xpto_/ShowDataParams.htm", dataItemValue, 300,300);
}
console.log(parameters)
正在运作。在另一个功能我需要访问parameters
。
感谢的。
答案 0 :(得分:0)
关键是参数不可用。将参数传递给表单的正确方法是将其传递给url:
var addParams = "Param1=" + param1 + "&Param2=" + param2;
var webresourceurl = "/webresources/new_/webresource.htm?Data=" + encodeURIComponent(addParams);
本文提供了详细说明 - http://butenko.pro/2014/06/dynamics-crm-2013-step-by-step-creating-dialog-windows/
答案 1 :(得分:0)
我发现将GET
个参数发送到自定义WebResources无法正常工作的情况。不知何故,它可能会破坏CRM核心中的内部URL重写。
通常它显示为错误500
而不是您预期的网络内容。原因是,正如我所提到的,您的GET
参数会混淆标准的CRM URL重写机制。添加自定义参数时,URL不再匹配重写规则和CRM爆炸,错误为500
。
在这种情况下,您可以使用hash-bang
字符串。它们可以传递给URL,但前缀为#!
个符号。这个技巧使它们对于服务器端操作是不可见的,因为URL中的#
符号之后的所有内容都是指页面内的锚点(本地链接),这就是为什么它被普通服务器端跳过的原因代码。
但你可以在客户端解码它。
例如,您的网址可能如下所示:
xpto_/ShowDataParams.htm#!name1=value1&name2=value2
您可以使用以下函数从您的网络资源中的网址获取名称 - 值对:
function ExtractParameters() {
var url = window.location.href;
var pairs = {};
var hashes = url.slice(url.indexOf('#!') + 2).split('&');
for(var i = 0; i < hashes.length; i++) {
var hash = hashes[i].split('=');
if(hash.length > 1) {
pairs[hash[0]] = hash[1];
} else {
pairs[hash[0]] = null;
}
}
return pairs;
}
附注:没有必要使用#!
#
很重要,但我更喜欢使用更复杂的符号组合以达到详细目的,因此它赢得了#39; t与其他任何东西混合。