2012-01-07 77 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>