Javascript 如何使扩展成为动态语句的一部分?

Javascript 如何使扩展成为动态语句的一部分?,javascript,tin-can-api,Javascript,Tin Can Api,发送声明有一部分让我感到困惑。在第一组代码中,我设置了一些变量,然后成功地使用这些变量发送语句。除了我尝试为“扩展”做这件事时,一切都正常 我为扩展的两个部分都设置了变量,但是当我试图在第二组代码中使用它时,我无法让它工作。我尝试过避开引号和许多其他的组合,但没有任何效果。控制台错误消息声明“请求错误”。如何修改底部代码集中的扩展区域,使其正常工作。多谢各位 //this happens when the user clicks the 'Find your English level' lin

发送声明有一部分让我感到困惑。在第一组代码中,我设置了一些变量,然后成功地使用这些变量发送语句。除了我尝试为“扩展”做这件事时,一切都正常 我为扩展的两个部分都设置了变量,但是当我试图在第二组代码中使用它时,我无法让它工作。我尝试过避开引号和许多其他的组合,但没有任何效果。控制台错误消息声明“请求错误”。如何修改底部代码集中的扩展区域,使其正常工作。多谢各位

//this happens when the user clicks the 'Find your English level' link
$("#findYourEnglishLevel").click(function () {
    window.open('https://learnenglish.britishcouncil.org/en/content', 'myWin', 'scrollbars=yes,resizable=yes,top=50,left=50,width=1280,height=920');
    var name = localStorage.getItem("name");
    var email = localStorage.getItem("email");
    var myView = "Find your English Level";
    var ext1 = "https://learnenglish.britishcouncil.org/en/content";
    var ext2 = "Find your English Level";
    sendStatement(myView, name, email, ext1, ext2);
});



function sendStatement(m, n, e, ext1, ext2) {
    //var stmt = {"actor" : {"mbox" : "mailto:user@example.com"},
    var stmt = {"actor": {
            "mbox": ("mailto:" + e),
            "name": n
        },

        "verb": {"id": "http://adlnet.gov/expapi/verbs/accessed",
            "display": {"en-US": "accessed"}},
        "object": {"id": "https://www.syniverse.com/businessenglish",
            "definition": {

                /*"extensions": {
                 "https://learnenglish.britishcouncil.org/en/content": "Find your English Level"
                 },*/

                "extensions": {
                    ext1: ext2
                },

                "name": {
                    "en-US": m
                },

                "description": {
                    "en-US": "Business English"
                }
            },
        }};


    conf()
    ADL.XAPIWrapper.sendStatement(stmt, function (resp, obj) {
        ADL.XAPIWrapper.log("[" + obj.id + "]: " + resp.status + " - " + resp.statusText);
    });
}

您试图在对象声明期间使用
ext1
作为键的变量,但这是无法做到的

第一个取决于您使用的javascript(浏览器或节点),是一个更现代的实现

“扩展”:{
[ext1]:ext2
},

否则,在定义
stmt
之后,您可以通过这种方式使用键的字符串设置新的键值对

stmt[ext1]=ext2