如何获得URL参数与Javascript - CRM

How to get URL parameters with Javascript - CRM?

本文关键字:Javascript CRM 参数 何获得 URL      更新时间:2023-09-26

我正在使用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。谢谢。

关键是参数将不可用。传递参数到form的正确方法是通过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/

我看到一些情况下,当发送GET参数到自定义WebResources不能正常工作。不知何故,它可能会扰乱CRM核心的内部URL重写。

通常它显示为错误500而不是您期望的web内容。原因是,正如我提到的,您的GET参数与标准的CRM URL重写机制相混淆。当您添加自定义参数时,URL不再与重写规则匹配,CRM会出现错误500

在这种情况下,您可以使用hash-bang字符串。它们可以传递给URL,但要加上#!符号。这个技巧使它们对服务器端操作不可见,因为URL中#符号之后的所有内容都应该引用页面内的锚(本地链接),这就是为什么它被正常的服务器端代码跳过的原因。

但是你可以在客户端解码。

例如,你的URL可以像这样:

xpto_/ShowDataParams.htm#!name1=value1&name2=value2

你可以使用下面的函数从你的URL中获取名称-值对:

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;
}

旁注:没有必要使用#!, #是重要的,但我更喜欢有更复杂的符号组合,以达到冗长的目的,所以它不会与其他任何东西混合。