2012-01-07 93 views
3

我已經包含了這個js文件在我的網頁的標題來存儲訪問者信息:如何通過session.js訪問作爲Json公開的訪問者數據?

https://github.com/codejoust/session.js/

我想要做的就是使用它來獲取訪客信息,並設置隱藏表單字段信息並將它們傳遞到服務器:

例如,我想提取JSON的部分之一是這樣的:

"browser": { 
    "browser": "Chrome", 
    "version": 16, 
    "OS": "Mac" 
    }, 

我感到困惑的是如何訪問這些數據。

最初我只是將js文件包含在我的頁面的head部分中,並訪問window.session.browser.browserwindow.session.browser.OS等元素,並且此工作正常。

但原js文件被更新後,這種方法不再工作,並顯示在Firebug的錯誤:

window.session is undefined 

回答

1
var el = document.getElementById("some_hidden_input"); 
el.value = window.session.browser; 
2

的數據被存儲在window.session.browser

var oBrowserData = window.session.browser; 
document.getElementById('os').value = oBrowserData.OS; 
document.getElementById('browser').value = oBrowserData.browser; 
document.getElementById('version').value = oBrowserData.version; 

另請參閱此example

要訪問這些數據,你可以這樣做:

<body> 
<form> 
    <input type="hidden" id="os" name="os" value="" /> 
    <input type="hidden" id="browser" name="browser" value="" /> 
    <input type="hidden" id="version" name="version" value="" /> 
</form> 
<script type="text/javascript"> 
window.session = { 
    start: function(session) { 
     document.getElementById('os').value = session.browser.os; 
     document.getElementById('browser').value = session.browser.browser; 
     document.getElementById('version').value = session.browser.version; 
    }, 
    config: { gapi_location: false } 
}; 
</script> 
<script type="text/javascript" src="http://codejoust.github.com/session.js/session-0.4.js"></script> 
</body> 

也看看我的新example

CodeJoust說:

如果包括會話0.4.js,不session.js,該API將保持穩定。

此外,在正文中使用回調函數和腳本標記是可選的,因爲您不等待位置回調。但是,將它添加到主體的末尾效果很好,因爲在加載session.js腳本後,表單標記將可用於修改。

+0

我已經更新了我對當前server.js版本的回答。 – scessor 2012-01-08 23:14:16

+0

很抱歉關於API的更改 - 請記住鏈接到特定版本,並且我在下面包含了一個響應。除非你使用的是0.3版本,否則window.session_loaded API會變成window.session = {loaded:function(){/ * loaded * /}} – CodeJoust 2012-01-09 16:08:44

+0

我已經更新了我的答案(再次)。 – scessor 2012-01-09 17:14:26

0

對不起,API改變了,但我覺得最好早點做。

我想我有鏈接在github頁面上使用某個版本,並強烈建議使用它來代替版本。

當前的穩定版本是:http://codejoust.github.com/session.js/session-0.4.js github演示中的API信息和讀數對應於發佈在那裏的最新版本。

對於這個用例,我建議只在標題中包含腳本,並關閉位置提取,如果你不使用它。回調是可選的,並且只在您等待JSON響應時才需要。

<script>window.session = { gapi_location: false }</script> 
<script src="http://codejoust.github.com/session.js/session-0.4.js"></script> 
<script> 
    // Here you can access the session object. 
    alert(window.session.browser.browser); 
</script>