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

时间:2017-03-24 05:52:38

标签: javascript qualtrics

我在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 个答案:

答案 0 :(得分:0)

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

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

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

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