Ajax Функция вызова - Fire Facebook Pixel Условно и перенаправить на страницу с благодарностью - PullRequest
0 голосов
/ 31 марта 2020

У меня возникли проблемы с получением этой части Ajax Запрос вызова в моей форме для правильной работы. Работает базовая функция перенаправления c, однако я пытаюсь обновить функцию для условного запуска пикселя Facebook на основе значения, введенного пользователем из раскрывающегося списка в моей форме. Вот соответствующая функция вызова html и ajax:

Вот выпадающий список HTML

 <label for="homeowner">Are you a homeowner?</label>
    <select id="rentorown" name="homeowner" required >
    <option value=""></option>
      <option value="own">Yes, I own my home.</option>
      <option value="rent">No, I rent.</option>
    </select>    

Вот вызов ajax

$('#myForm').submit(function(e){
    e.preventDefault();
    $.ajax({
        url:'https://hooks.zapier.com/hooks/catch',
        type:'post',
        data:$('#myForm').serialize(),
        success:function fbpixel(){
         var own = document.getElementById("rentorown").value;   

  if (own ==="own") {
 fbq('track', 'Lead'); 
 window.top.location = "https://www.sampleurl.com/thankyou";
} else {
  fbq('track', 'AddToCart');
  window.top.location = "https://www.sampleurl.com/thankyou";
}

        }
    });
}); 

Вышеприведенная функция вызова правильно отправляет данные представления лидера в zapier, однако пиксель не запускается условно и не перенаправляет страницу.

Есть ли у вас какие-либо предложения о том, как правильно выполнить sh выше с ajax функцией вызова?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Вы можете попробовать обещать Ajax звонок, например:

function afterAjax() {
  return new Promise((resolve, reject) => {
    $('#myForm').submit(function(e){
      e.preventDefault();
      $.ajax({
        url: 'https://hooks.zapier.com/hooks/catch',
        type: 'post',
        data: $('#myForm').serialize(),
        success: function(data) {
          resolve(data)
        },
        error: function(error) {
          reject(error)
        }
    });
}); 


afterAjax().then(data => {

  var own = document.getElementById("rentorown").value;   

  if (own ==="own") {
    fbq('track', 'Lead'); 
    window.top.location = "https://www.sampleurl.com/thankyou";
  } else {
    fbq('track', 'AddToCart');
    window.top.location = "https://www.sampleurl.com/thankyou";
  }

}).catch(error => {
   console.log(error)
})
0 голосов
/ 31 марта 2020

Удалите fbpixel из вашего кода, и оно должно работать:

success: function () {
  // your function code
}
...