2016-08-23 37 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; 
} 

旁註:沒有必要使用#!#很重要,但我寧願爲了冗長的目的而具有更復雜的符號組合,所以它不會與其他任何東西混合。