Qualtrics - 将响应传递给 Javascript 以进行 API 调用

Posted

技术标签:

【中文标题】Qualtrics - 将响应传递给 Javascript 以进行 API 调用【英文标题】:Qualtrics - Passing Response into Javascript for API Call 【发布时间】:2017-08-16 23:14:56 【问题描述】:

我在 Qualtrics 进行了一项调查。在一个问题中,受访者提供了一个电子邮件地址。我需要使用他们的 API 将该电子邮件地址发送给礼品卡提供商 (Giftbit)。我下面的代码位于“调查结束元素”中,作为自定义调查结束消息。

我正在尝试将受访者提供的电子邮件地址捕获为 html 中的管道文本 ($q://QID6/ChoiceTextEntryValue),然后使用下面的 getEmailAddress 函数将该值传递给 javascript。然后我在随后的 API 调用中将该值指定为 emailAddressText。

提前感谢您的建议 - 我已经对代码进行了几十次调整,但我没有想法。

Thank you for completing the survey.

<span id="EmailAddress" style="display: none;">$q://QID6/ChoiceTextEntryValue</span>

<script>

function getEmailAddress() 
   var emailAddressText=("EmailAddress").innerHTML;



var request = new XMLHttpRequest();

request.open('POST', 'https://testbedapp.giftbit.com/papi/v1/campaign');

request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Authorization', 'Bearer ACCESS_TOKEN');

request.onreadystatechange = function () 
  if (this.readyState === 4) 
    console.log('Status:', this.status);
    console.log('Headers:', this.getAllResponseHeaders());
    console.log('Body:', this.responseText);
  
;

var body = 
  'message': 'Thanks for completing the survey.',
  'subject': ‘Here is your $50 gift card!',
  'contacts': [
    
      'email': emailAddressText
    
  ],
  'marketplace_gifts': [
    
      'id': 1,
      'price_in_cents': 5000
    
  ],
  'expiry': '2018-01-01',
  'id': 'clientProvidedGiftId_abc123'
; 
request.send(JSON.stringify(body));

</script>

【问题讨论】:

【参考方案1】:

您永远不会调用 getEmailAddress 函数,即使您调用了 emailAddressText 也是该函数的本地函数(您不会返回它)。

更好的方法是将电子邮件地址通过管道传输到您想要的脚本中(代替 span 标签和 getEmailAddress 函数):

  'contacts': [
    
      'email': '$q://QID6/ChoiceTextEntryValue'
    
  ],

此外,您应该将其添加为 JavaScript,而不是带有脚本标记的问题的一部分。

【讨论】:

以上是关于Qualtrics - 将响应传递给 Javascript 以进行 API 调用的主要内容,如果未能解决你的问题,请参考以下文章

将 Javascript 计算传递给 Django 后端

Qualtrics:使用javascript转换管道变量并以文本显示?

使用 ArrayAdapter 将 volley 响应传递给 listview

Qualtrics-Javascript代码:下一个按钮仅隐藏在一个页面中

Node.js 将响应对象句柄的句柄传递给子进程

Angular 6:将 Observable 响应传递给另一个 Observable