代码之家  ›  专栏  ›  技术社区  ›  pkalinow Bertrand Delacretaz

如何设置名称中带有点的上下文变量?

  •  0
  • pkalinow Bertrand Delacretaz  · 技术社区  · 6 年前

    我试图添加一个上下文数据变量(CDV),它的名称中有一个点。根据 Adobe site

    s.contextData['myco.rsid'] = 'value'
    

    不幸的是,打过电话之后 s.t()

    Context Variables
    myco.:  
    rsid: value 
    .myco:  
    

    如何设置变量并防止将其拆分?

    1 回复  |  直到 6 年前
        1
  •  2
  •   CrayonViolent    6 年前

    s.contextData['myco.rsid1'] = 'value';
    s.contextData['myco.rsid2'] = 'value';
    

    您将在AA请求URL中看到(仅显示相关部分):

    c.&myco.&rsid1=value&rsid2=value&.myco&.c

    我假设您这样问是因为您想更容易地从browser network选项卡、extension或某个unittester解析/qaaa收集请求url?在变量中使用点语法(名称空间)时,无法强制AA不这样做。

    contextData

    _ :

    s.contextData['myco_rsid1'] = 'value';
    s.contextData['myco_rsid2'] = 'value';
    

    c.&myco_rsid1=value&myco_rsid2=value&.c

    旁注: 你呢 不能 使用完整的对象/点符号语法 s.contextData

    s.contextData = {
        foo:'bar',     // <--- this will properly parse
        myco:{         // this will not properly parse
          rsid:'value' // 
        }              //
    };
    

    AA库不能正确地解析它;它只是循环遍历 上下文数据 生成请求URL时。因此,如果您像上面那样执行完整的对象语法,您将得到:

    c.&foo=bar&myco=%5Bobject%20Object%5D&&.c

    foo 没关系,但你最后只有 myco JSON.stringify(s.contextData) ? ¯\_(ツ)_/¯