Выполнить код 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, время: 04:56. |