Выполнить код Google Analytics eCommers после заказа AJAXом
Выполнить код Google Analytics eCommers после заказа AJAXом
Добрый день! Нужна ваша помощь по реализации стандартного API GA. ----------------- Задача: Нужно отследить покупку заказа товара. ----------------- Методы: Использую стандартное API от GA. В документации сказано, что код Google нужно разместить на странице , которая оповещает об удачной покупке. Но у меня заказ производится через AJAX. И выводится сообщение что заказ оформлен в асинхронном режиме. Как мне через AJAX отследить покупку? ----------------- Как я реализовую? файл: analyticsGoogle.js ( подключаю в header) function addTransaction(order,allPrice) { _gaq.push(['_addTrans', order, // Внутренний уникальный идентификационный номер заказа "",// Дополнительный партнер или аффилированный склад allPrice,// Общая сумма в долларах для транзакции "", // Сумма налога для транзакции "",// Сумма отгрузки для транзакции "", // Город, связанный с транзакцией "", // Область или регион "Россия" // Страна ]); console.log('It work!'); } function addOrder(order, name, price, kolvo, category) { _gaq.push(['_addItem', order, // Ваш внутренний уникальный идентификационный номер заказа (должен быть таким же, как для строки транзакции) "", // Код складской единицы для продукта name, // Название или описание продукта category, // Категория продукта или разновидности price,// Цена за единицу продукта kolvo // Заказанное количество ]); console.log('It work!'); } // end GA Commercy Функция отправки из файла: addOne.js (подключаю ниже) /* * Функция отправка формы AJAX */ function SendPost() { var i = 0; // счетчик полей jQuery.each(jQuery('#ordering-mw input'), function(index,value) // снова перибераем input'ы { if(jQuery(value).val().length > 0) i = i+1; // считаем только заполненные }); if(i>6) // 6 input полей в форме включая hidden { jQuery.ajax({ type: 'POST', url: '/addone/addOne.php', // скрипт который обрабатывает все серверные запросы data: { // параметры для $_POST 'name' : jQuery("#ordering-name").val(), 'phone' : jQuery("#ordering-phone").val(), 'email' : jQuery("#ordering-email").val(), 'product' : jQuery("#pID").val(), 'price' : jQuery("#price").val(), 'id' : jQuery("#id").val(), 'url' : jQuery("#url").val(), }, response : 'text', // возвращаем ответ текстом beforeSend : function() // перед отправкой { jQuery('#rslt').html('<img src="/addone/images/loading-one.gif" border="0">'); }, header: { // заголовок браузеру 'Content-Type' : 'application/x-www-form-urlencoded; charset=utf-8', 'Referer' : location.href }, success : function(data) // возвращает ok, если все ок { addTransaction(jQuery("#id").val(), jQuery("#price").val()); // Вызываю методы добавления транзакции addOrder(jQuery("#id").val(), jQuery("#ordering-name").val(), jQuery("#price").val(), 1, 'Заказано в один клик'); // метод добавления инфы о товаре if(data == "wrongmail") jQuery('#rslt').html('<span style="color: #f00;">Не верный формат e-mail! Повторите отправку.</span>'); else if(data == "emptymail") jQuery('#rslt').html('<span style="color: #f00;">Не верный формат e-mail! Повторите отправку.</span>'); else if(data == "spam") jQuery('#rslt').html('<span style="color: #f00;">Подождите несколько секунд, чтобы заказать повторно</span>'); else jQuery('#rslt').html('<span style="color: #068403;">Заказ отправлен успешно, с Вами свяжется наш оператор.</span>'); } }); } else { jQuery('#rslt').html('<span style="color: #f00;">Необходимо заполнить все поля</span>'); } } Кусок HTML со страницы формы заказа: <!-- Модальное окно для заказа в один клик --> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-23801028-1']); // объявляю ID для GA _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> <div style="display: none;" id="oneClick" class="jqmWindow formOne jqmID1"> <div id="ordering-mw"> <div><a class="jqmClose" id="close-icon" href="#"></a></div> <div class="clear"></div> <h2>Заказ в один клик!</h2> <p>Оформление заказа</p> <div style="text-align: center;" id="rslt" class="rslt"></div> <form action="#"> <input type="hidden" value="" name="productID" id="pID"> <input type="hidden" value="" name="price" id="price"> <input type="hidden" value="" name="id" id="id"> <input type="hidden" value="" name="url" id="url"> ... ..... ...... <input type="button" value="Отправить" onclick="SendPost();"> Форма работает, но статистика не доходит :( Помогите пожалуйста! |
Цитата:
ЗЫ: Код не смотрел, - жарко |
Вывел консоль лог ключевых функций addTransaction() и addOrder() , все аргументы передаются, все корректно
|
[quote=Deff;191504]В этом жа callback и вызвать Google Analytics
success : function(data) // возвращает ok, если все ок { addTransaction(jQuery("#id").val(), jQuery("#price").val()); // Вызываю методы добавления транзакции addOrder(jQuery("#id").val(), jQuery("#ordering-name").val(), jQuery("#price").val(), 1, 'Заказано в один клик'); // метод добавления инфы о товаре ..... ........ } так вот они , я ж и вызываю их |
Stanisov,
Попробуйте вызов Google Analytics делать через таймер с задержкой - возможно одновременное использование HTML Request setTimeout(function() {//Tут Вызов },600); |
Нет, все равно не проходит толком . В GA транзакции считает, а товар не добавляет. То есть у меня срабатывает функция addTransaction() только
|
Stanisov,
При вызове через таймер - нужно передать все необходимые переменные для addTransaction , так как таймерный вызов отвязан от функции , в которой запускается и всякие this - не передаются явно - их надо передавать через переменные |
var prod_id = jQuery("#id").val(); var prod_name = jQuery("#pID").val(); var prod_price = jQuery("#price").val(); if(data == "wrongmail") jQuery('#rslt').html('<span style="color: #f00;">Не верный формат e-mail! Повторите отправку.</span>'); else { setTimeout(function() { addTransaction(prod_id, prod_price); // Вызываю методы добавления транзакции addOrder(prod_id, prod_name, prod_price, 1, 'Заказано в один клик'); // метод добавления инфы о товаре },600); } Ну вот так передаю, тоже не работает ;( |
Stanisov,
1. Вопрос - А ежели после вывода на страницу "И выводится сообщение что заказ оформлен" - запустить Google Analytics - Работает ? К примеру реализация Теста такая: (Вставляем на саму страницу (минута для оформления тестового заказа $(window).load(function () { setTimeout(function() { //Тут Вызов Google Analytics },60000) }); |
Часовой пояс GMT +3, время: 22:13. |