2016-08-23 69 views
0

我正在使用Microsoft Dynamics CRM。该页面打开一个带有webresource的弹出窗口。我传递URL的参数,并且我需要让它们使用javascript。 有代码:如何使用Javascript - CRM获取URL参数?

function open() { 
    var dataItemValue = Xrm.Page.data.entity.getId(); 
    Xrm.Utility.openWebResource("xpto_/ShowDataParams.htm", dataItemValue, 300,300);  
} 

console.log(parameters)工作。在另一个功能,我需要访问parameters。 谢谢。

+0

我有点失落 - 你已经有了JavaScript参数。如果你的意思是你想访问该函数之外的参数对象,那么只需声明它并将其填充到函数之外,这样它就具有全局作用域。 – Archer

回答

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/

+0

我的webresource是:'/ WebResources/xpto_/html/UploadFile?preview = 1'。所以我把:var currentRecId = window.parent.Xrm.Page.data.entity.getId();','var addParams =“recordid =”+ currentRecId;'和var src =“/ WebResources/xpto_/html/UploadFile?preview = 1?Data =“+ encodeURIComponent(addParams);'。并把变量url放在openDialog中。但它仍然没有工作。 – Claudia

+0

您应该从var src =“/ WebResources/xpto_/html/UploadFile?preview = 1&Data =”+ –

+0

嗨,谢谢。我已经做了代码。我用我的解决方案编辑问题。 – Claudia

0

我已经看到了一些情况下发送GET参数定制WebResources时不好好工作。不知何故,它可能会混淆CRM内核中的内部URL重写。

正常情况下,它显示为错误500而不是您的预期网页内容。正如我所提到的,原因是您的GET参数与标准的CRM URL重写机制混淆。当您添加自定义参数时,URL不再与重写规则匹配,并且CRM爆炸错误500

在这种情况下,您可以使用hash-bang字符串。可以将它们传递给URL,但前缀为#!符号。这个技巧使得它们在服务器端操作中不可见,因为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; 
} 

旁注:没有必要使用#!#很重要,但我宁愿为了冗长的目的而具有更复杂的符号组合,所以它不会与其他任何东西混合。