我在GTM數據層中使用了一個從Liferay rest API調用中檢索其值的變量。當在GTM中的數據層中使用時,Javascript變量undefined
var openId;
AUI().ready('aui-base', function(A){
Liferay.Service(
'/user/get-user-by-id',
{
userId: Liferay.ThemeDisplay.getUserId()
},
function(obj) {
openId=obj.openId;
}
);
});
這裏openId
變量被在GTM數據層,它是不可用,並示出了如undefined
使用。 數據層被定義爲如下:
dataLayer = [{
"page" : Liferay.currentURL
,"pageType" : instrDetail
,"user" : {
"type" : userType
,"accountId" : openId
}
}];
並且在最後,我們有GTM塊,定義標籤管理器腳本塊。
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');
現在,當我試圖訪問數據層的openId
變量,它顯示爲不確定的,而當我嘗試訪問的同一個瀏覽器控制檯,它會顯示正確的值。