Срабатывание цели ЯМетрики на успешную отправку ajax формы

Главные вкладки

Аватар пользователя seohmeo seohmeo 26 мая 2018 в 14:21

добрый день всем! Ни когда не сталкивался с тем что onsubmit не срабатывает и цель тоже соответственно.

Тут копать?
http://gh35.ru/sites/all/themes/gh/js/script.js

Куда вставить yaCounter46051725.reachGoal('call'); ?

Пока что получилось, так - цель срабатывает после открытия модального окна, а надо при отправке формы.

Спасибо всем кто ответит.

Лучший ответ

Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 16:45

Зачем теперь через JS? Я же выше написал, что в вебформах можно поставить редирект на произвольную страницу после отправки формы. Стандартным образом, через админку Друпала.

Комментарии

Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 14:49

Тогда, возможно, так (добавить в JS формы или страницы с формой):

// #myform - id формы
$("#myform").bind('ajax:complete', function() {
     yaCounter46051725.reachGoal('call');
});

Или вариант перед самым сабмитом (после клика на кнопку):

$(".form-submit").click(function(e) {
  e.preventDefault();
  yaCounter46051725.reachGoal('call');
  $(this).closest("#myform").submit();
});
Аватар пользователя seohmeo seohmeo 26 мая 2018 в 15:20
<script type="text/javascript" >
jQuery(".form-submit").click(function(e) {
  e.preventDefault();
  yaCounter46051725.reachGoal('call');
  jQuery(this).closest("#webform-client-form-77").submit();
});

</script>

тоже

Аватар пользователя seohmeo seohmeo 26 мая 2018 в 15:16
<script type="text/javascript" >
jQuery("#webform-client-form-77").bind('ajax:complete', function() {
     yaCounter46051725.reachGoal('call');
});
</script>

не срабатывает.

Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 15:26

Это и не сработает, реакция на document.ready должна быть и DOM должен быть уже инициализирован перед bind.
Т.е. как минимум:

(function ($) {
  $(document).ready(function(){
    $("#webform-client-form-77").bind('ajax:complete', function() {
       yaCounter46051725.reachGoal('call');
   });
  });
})(jQuery);
Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 15:47

action ни при чём.

Смотрите консоль браузера, а также console.log() в помощь.

Боюсь, больше пока ничем не смогу помочь. Вашу ситуацию копать нужно более предметно.

Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 15:52

'ajax:complete' отрабатывает в любом случае (хоть ошибка, хоть успех), а 'ajax:success' - только в случае успеха (т.е. отсутствия ошибок AJAX).

Аватар пользователя seohmeo seohmeo 26 мая 2018 в 15:56

копать не особо хочу.... Вижу решение - редирект после отправки формы на страницу благодарности. Как реализовать?

Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 16:08

Да в настройках же вебформ можно указать кастомную страницу по сабмиту. К этой странице можно прикрутить кастомный же шаблон (копию page.tpl.php) с вызовом yaCounter46051725.reachGoal('call');

Вообще, тут вчера был апологет webform, может появится и что-то подскажет.

Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 15:55

Вставьте перед yaCounter46051725.reachGoal('call'); вывод в консоль любой тестовой строки, ну например

...
console.log('submitted');
yaCounter46051725.reachGoal('call')
...

И посмотрите, что в консоли после сабмита, есть ли строка "submitted".
Если нет - значит механика вообще не работает в вашем случае.

Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 16:04

Значит, механизм по AJAX-сабмиту работает и вызов yaCounter46051725.reachGoal('call'); реально происходит.
Почему не отрабатывает - это уже нужно копать yaCounter46051725.reachGoal('call'); и метрику.

Аватар пользователя seohmeo seohmeo 26 мая 2018 в 16:42
(function ($) {
  $(document).ajaxComplete(function(){
    $("#webform-client-form-77").bind('ajax:success', function() {
       window.location = "/thanks";
   });
  });
})(jQuery);

решил просто отправлять посетителя на страницу благодарности и фиксировать цель по url.

Что не верно делаю? не переадресовывает

Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 16:45

Зачем теперь через JS? Я же выше написал, что в вебформах можно поставить редирект на произвольную страницу после отправки формы. Стандартным образом, через админку Друпала.

Аватар пользователя OldWarrior OldWarrior 26 мая 2018 в 16:48

PS. Вообще - что-то намудрили.

Вы ставите один обработчик .ajaxComplete(), а внутри него пытаетесь биндить другой обработчик .bind('ajax:success').
Масло масляное и работать не будет или будет с ошибками.

Аватар пользователя seohmeo seohmeo 26 мая 2018 в 16:55

OldWarrior wrote:

PS. Вообще - что-то намудрили.
Вы ставите один обработчик .ajaxComplete(), а внутри него пытаетесь биндить другой обработчик .bind('ajax:success').

Масло масляное и работать не будет или будет с ошибками.

не внимательно скопировал.

(function ($) {
  $(document).ready(function(){
    $("#webform-client-form-77").bind('ajax:complete', function() {
        window.location = "/thanks";
   });
  });
})(jQuery);
Аватар пользователя seohmeo seohmeo 26 мая 2018 в 17:51

Заказчик не дал доступов к админке, а только как контент менеджера. Теперь получил доступы и настроил штатным редиректом. Спасибо за помощь!