Javascript 包含点(.)字符的参考Qualtrics嵌入式数据字段

Javascript 包含点(.)字符的参考Qualtrics嵌入式数据字段,javascript,qualtrics,Javascript,Qualtrics,从联系人列表导入字段时,相应的嵌入数据字段包括点()。例如,以下是在联系人列表导入时自动创建的一个嵌入数据的名称: result.elements.0.embeddedData.V1 在我的调查中,我想访问存储在这个嵌入式数据字段中的值。但是Qualtrics提供的getEmbeddedData()javascript方法显然不喜欢点。 举一个简单的例子,我将上面的嵌入数据名称缩短为V.1: Qualtrics.SurveyEngine.getEmbeddedData('V.1'); // r

从联系人列表导入字段时,相应的嵌入数据字段包括点(
)。例如,以下是在联系人列表导入时自动创建的一个嵌入数据的名称:

result.elements.0.embeddedData.V1
在我的调查中,我想访问存储在这个嵌入式数据字段中的值。但是Qualtrics提供的
getEmbeddedData()
javascript方法显然不喜欢点。
举一个简单的例子,我将上面的嵌入数据名称缩短为
V.1

Qualtrics.SurveyEngine.getEmbeddedData('V.1'); // returns null
并返回一个空值

如果我将嵌入的数据字段名称更改为
V1
(否
),则该方法返回正确的值:

Qualtrics.SurveyEngine.getEmbeddedData('V1'); # returns correct value
在名称中有点的情况下,我尝试使用
\\
\
进行转义,例如:
getEmbeddedData('V\\.1')
,但这两种转义样式都不起作用-
null

使用javascript访问嵌入式数据还有另一种语法——
“${e://Field/myfield}”
方法——但我需要能够动态设置最后一个字符(即
V
之后的数字),而此方法不允许这样做。具体而言,对于嵌入式数据
V1

var ix = 1;
Qualtrics.SurveyEngine.getEmbeddedData('V'+ix); <-- this works
"${e://Field/V"+ix+"}"; <-- this doesn't work
var ix=1;

Qualtrics.SurveyEngine.getEmbeddedData('V'+ix) 我回答了你关于Qualtrics社区的相关问题。您不能执行
“${e://Field/V”+ix+“}”
,因为在将页面发送到浏览器之前,管道已在服务器上解析

当web服务返回json或xml时,默认情况下Qualtrics对结构中的每个级别使用一个点。您可以通过将嵌入变量(在web服务块的左侧)更改为不带点的名称来覆盖它

另一种选择是编写自己的web服务脚本来调用Qualtrics API,然后将结果放在一个平面json结构中,然后再返回到调查中

根据以下评论进行更新

自动重命名从web服务调用返回的嵌入变量-我认为唯一的方法是我的替代建议-编写自己的web服务脚本,转换从api返回的信息并重命名变量,将它们放入一维关联数组,然后将该数组转换为json

Qualtrics问题API-getEmbeddedData()已从文档中删除。我不知道为什么,我不得不请求Qualtrics的支持。目前,它仍然有效。因此,如果需要动态地用点构造嵌入式变量名,可以基于getEmbeddedData()创建自己的函数。使用浏览器的开发工具查看它的功能


我发现addEmbeddedData()在实际操作中是无用的。无论是否在测量流中定义了嵌入数据字段,setEmbeddedData()都有效。如果在测量流中定义了它,则会将其保存到响应数据中。如果未在调查流中定义,则可以在当前调查响应中引用,但不会保存在响应数据中

嗨,谢谢你的回答。是的,我已经看到了关于服务器上正在解析的管道的一些其他答案-我只是注意到我知道这在这里不起作用。我的主要问题是如何转义
字符。我已经找到了一些解决方法来实现我的最终目标,这些都是好主意。但这个问题主要是关于找到正确的转义语法来正确调用这些ED字段。有什么想法吗?只有一个,而且不漂亮。有趣的是,getEmbeddedData甚至不再包含在Question API文档中()。我的一个想法是使用开发工具找到Qualtrics getEmbeddedData JS,然后将其用作编写自己的getEmbeddedData函数的基础?如果是这样的话,那将是一个遗憾,因为这是我能够绕过无法对
${e://Field/..}
语法进行客户端更新的唯一方法。(也有点不相关:
setEmbeddedData()
API docstring现在说“将嵌入数据设置到页面,或者在ED键不在页面上时添加数据”……这对我来说也是新的,我认为必须设置ED键才能工作。)这是一个好主意(尽管很难)重新编写
getEmbeddedData()
。您是否可以更新您的答案,以表明这一点,并注意到该方法已不再存在于文档中?另外,如果您建议重命名嵌入的变量名,有什么方法可以通过编程实现吗?(在我最初的帖子中,我提到我有大约1000个ED字段,不想手工重命名。)这些都不是问题的真实答案,但如果你能用我们在评论中得到的一些答案替换掉当前的答案,我很乐意投上一票。谢谢