Передача некодированной строки в URL-адрес — Javascript

#javascript #forms #hubspot

Вопрос:

Я использую этот скрипт для передачи данных из формы в URL-адрес

Проблема: электронное письмо передается в кодированном виде, и вместо @ добавляется @

  • Есть ли способ передать некодированный URL-адрес? Я хотел бы передать полное электронное письмо в URL.

Мне нужно полное электронное письмо, потому что я использую его затем для заполнения скрытого поля в форме Typeform.

Большое спасибо за вашу помощь 🙂

 <!--[if lte IE 8]>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2-legacy.js"></script>
<![endif]-->
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>
<script>
  hbspt.forms.create({
    portalId: "[PORTAL ID]",
    formId: "[FORM ID]"
  });
  // add custom script after it
  var array = [];
  window.addEventListener('message', event => {
    // in the onFormSubmit global form event, grab the data and push it to the above array
    if(event.data.type === 'hsFormCallback' amp;amp; event.data.eventName === 'onFormSubmit') {
      let vars = ['firstname', 'lastname', 'email', 'phone', 'hs_language'];
      let len = vars.length;
      for (i = 0; i < len; i  ) {
        for (j in event.data.data) {
          if (event.data.data[j]["name"] == vars[i]) {
            let object = {
              name: '',
              value: ''
            };
            object.name = vars[i];
            object.value = event.data.data[j]["value"];
            array.push(object);
          }
        }
      }
    }
    // after the form has submitted and data sent to Hubspot, get the data from the array and then redirect the page, adding the data to the URL
    if(event.data.type === 'hsFormCallback' amp;amp; event.data.eventName === 'onFormSubmitted') {
      var firstname = array[0].value
      var lastname = array[1].value
      var email = array[2].value
      var phone = array[3].value
      var lang = array[4].value
      window.location = "[URL TO REDIRECT TO HERE]?firstName="   encodeURIComponent( firstname )  "amp;lastName="   encodeURIComponent( lastname )  "amp;email="   encodeURIComponent( email )   "amp;phone="   encodeURIComponent( phone )   "amp;language="   encodeURIComponent( lang );
    }
  });
</script>
 

Комментарии:

1. Это не проблема, потому что вы можете просто запустить значение, decodeURIComponent() чтобы получить исходную строку

2. спасибо, Крис, декодированное значение должно отображаться в URL страницы, на которую указывает контакт при нажатии submit — Сейчас происходит то, что новый URL имеет там закодированное значение — Вы знаете, как я могу это сделать?

3. При создании URL-адреса замените encodeURIComponent( email ) на email

4. Обратите внимание, что я понятия не имею, в чем смысл всего этого, или почему кого-то волнует, говорит ли это @ или @ внутри длинного URL-адреса с кучей параметров. Также есть вероятность, что это серьезная проблема xy , но здесь просто недостаточно информации, чтобы дать содержательный ответ. Пожалуйста, попробуйте уточнить, какова здесь фактическая цель.

5. спасибо, Крис, я пытался заменить encodeURIComponent( email ) на email , но результат тот же!