0

这是我之前发布的关于解析 xAPI 语句的问题的后续内容。我得到了解析工作,现在我使用下面的代码从 ADL LRS 获取语句,它会提取前 50 条记录。有没有办法指定更多记录?谢谢你。

<!DOCTYPE  html> 
<html lang='en'> 
    <head> 
        <meta charset='UTF-8'> 
        <title>Get my Statements</title> 
        <script type="text/javascript" src="tincan.js"></script> 
    </head> 
    <body> 
        <h1>Get statements</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' : 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>
4

2 回答 2

0

使用下面的代码请求每页设置限制的语句。如果您在没有限制参数或限制为 0 的情况下发出请求,则服务器允许的最大语句数将在第一页返回(这是您上面已经在做的)。

tincan.getStatements({ params: { limit: 100 }, 'callback': function (err, result) { container.innerHTML = (err !== null ? 'ERROR' : parseMyData(result)); }

https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md#stmtapiget

要获取额外的报表页面,请使用 TinCanJS LRS moreStatements 方法:https ://github.com/RusticiSoftware/TinCanJS/blob/master/src/LRS.js#L766

有关如何创建 LRS 对象的信息,请参阅http://rusticisoftware.github.io/TinCanJS/ 。

于 2016-02-15T13:05:28.037 回答
0

更多记录将在请求本身中。查看 API 文档,大多数情况下您可以传递一个参数来检索要检索的记录。

于 2016-02-14T23:00:58.200 回答