尝试解析LRS中的xAPI语句

时间:2016-02-13 16:39:15

标签: javascript json tin-can-api

当我尝试从学习记录存储中返回记录时,我很成功,但它以未解析的数组形式出现。下面的图1 显示了成功引入此未解析数据的代码。

当我使用图2 中的代码引入三个已解析的字段时,它不起作用。执行后,浏览器中不显示任何内容。有人可以帮我解决图2 中的代码吗?非常感谢。

图1:

<!DOCTYPE  html> 
<html lang='en'> 
    <head> 
        <meta charset='UTF-8'> 
        <title>Get statements  101</title> 
        <script type="text/javascript" src="tincan.js"></script> 
    </head> 
    <body> 
        <h1>Pull info from the LRS</h1> 
        <div id='response'></div>
        <script>
       var tincan = new TinCan (
    {
        recordStores: [
            {
                endpoint: "https://lrs.adlnet.gov/xapi/",
                username: "xapi-tools",
                password: "xapi-tools",
                allowFail: false
            }
        ]
    }
);

        var container =  document.getElementById('response');
        tincan.getStatements({
            'callback': function (err, result) {
                container.innerHTML = (err !== null ? 'ERROR' : JSON.stringify(result.statements));
            }
        });
        </script> 
    </body> 
</html>

图2:

<!DOCTYPE  html> 
<html lang='en'> 
    <head> 
        <meta charset='UTF-8'> 
        <title>Pulling Data from the LRS</title> 
        <script type="text/javascript" src="tincan.js"></script> 
    </head> 
    <body> 
        <h1>Get statements</h1> 

        <script>
       var tincan = new TinCan (
    {
        recordStores: [
            {
                endpoint: "https://lrs.adlnet.gov/xapi/",
                username: "xapi-tools",
                password: "xapi-tools",
                allowFail: false
            }
        ]
    }
);


        tincan.getStatements({
    'callback': function (err, result) {
        container.innerHTML = (err !== null ? 'ERROR' : parseMyData(result));
    }
});
parseMyData = function(result) {
            var statements = result.statements;
            var output = '';
            var name,verb,activity;
            for(var i=0;i<statements.length;i++){
                // check the statement for a usable name value
                // (priority = actor.name, actor.mbox, actor.account.name)
                if(statements[i].actor.name != null && statements[i].actor.name != "") {
                    name = statements[i].actor.name
                }else if(statements[i].actor.mbox != null && statements[i].actor.mbox != "") {
                    name = statements[i].actor.mbox
                }else{
                    name = statements[i].actor.account.name
                }
                // check the statement for a usable verb value
                // (priority = verb.display['en-US'], verb.id)
                try{
                    verb = statements[i].verb.display['en-US'];
                }catch(e){
                    verb = statements[i].verb.id;
                }
                // check the activity for a usable value
                // (priority = definition.name['en-US'], id)
                try{
                    activity = statements[i].target.definition.name['en-US'];
                }catch(e){
                    activity = statements[i].target.id;
                }
                output +=   name + ' - ' +
                            verb + ' - ' + 
                            activity +
                            '<br>' 
            }
            return output;

        </script> 
    </body> 
</html>

0 个答案:

没有答案