我已經看到了一些情況下發送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;
}
旁註:沒有必要使用#!
#
很重要,但我寧願爲了冗長的目的而具有更復雜的符號組合,所以它不會與其他任何東西混合。
我有點失落 - 你已經有了JavaScript參數。如果你的意思是你想訪問該函數之外的參數對象,那麼只需聲明它並將其填充到函數之外,這樣它就具有全局作用域。 – Archer