我正在研究tincan JavaScript API。我的数据格式是完全变化的问题,TinCan已经指定了为什么要传递数据和调用。帮我调整我的TinCan Api格式的数据。以下是我打电话的示例数据。
var data = { " groupId":" groupId", " groupName":" gNameEncrypt", " tutorNames":" tutorNames", " actorNames":" actorNames", " otherNames":" otherNames" };
当前我做的只是解码这些数据并像这样发送。
var actionList = new TinCan(
{
recordStores: [{
endpoint: "http://example.com",
username: username,
password: password,
allowFail: false
}]
});
var action = new TinCan.Agent({
"name": "insert"
});
actionList.getStatements({
'params': {
'agent': action,
'verb': {
'id': $.base64.encode(data)
}
},
'callback': function (err, data) {
console.info(data.more);
var urlref = "http://<?php echo $_SERVER['SERVER_NAME'] . ":" . $_SERVER['SERVER_PORT'] . $uriParts[0] . "?" ?>t=" + data.more.TutorToken;
window.location.href = urlref;
}
});
crypt.finish();
});
答案 0 :(得分:0)
这里有两个部分,1)需要将数据转换为xAPI(以前的Tin Can)格式,以及2)代码本身。
1)我认为你需要再看一下xAPI的使用方法。数据存储在JSON&#34; Statement&#34;具有3个必需属性和各种其他可选属性的对象。这些属性通常包含非常可扩展的复杂对象。很难说你已经展示了你真正想要捕捉的东西以及最好的方法。我建议阅读一些有关xAPI语句格式的资料。 http://experienceapi.com/statements-101/是一个很好的起点,并且http://experienceapi.com/statements/继续对所有可能性进行至少一些报道。
2)您列出的代码试图根据两个参数获取已存储的语句,而不是尝试存储语句。这两个参数是&#34; agent&#34;和&#34;动词&#34;。在这种情况下,由于我们不知道data
包含什么,我们无法说出动词应该是什么,我怀疑这不是一个有意义的动词。意图是声明的行动。说完&#34;演员&#34;值action
是值得怀疑的,因为这听起来更像是一个&#34;动词&#34;应该包含。将声明作为#1的一部分正确应该明确如何检索这些声明。至于存储这些语句,如果您使用TinCan
接口对象,则需要使用该对象的sendStatement
方法。但是不再推荐使用此界面,建议的做法是构造TinCan.LRS
对象并直接与其进行交互,在这种情况下,您将使用saveStatement
方法。我建议看看&#34;基本用法&#34;项目主页的部分:http://rusticisoftware.github.io/TinCanJS/有关详细信息,请参阅API文档:http://rusticisoftware.github.io/TinCanJS/doc/api/latest/