Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.07.2012, 12:40
Интересующийся
Отправить личное сообщение для Stanisov Посмотреть профиль Найти все сообщения от Stanisov
 
Регистрация: 03.01.2012
Сообщений: 17

Выполнить код 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();">


Форма работает, но статистика не доходит Помогите пожалуйста!
Ответить с цитированием
  #2 (permalink)  
Старый 25.07.2012, 12:42
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Stanisov
И выводится сообщение что заказ оформлен в асинхронном режиме.
В этом жа callback и вызвать Google Analytics

ЗЫ: Код не смотрел, - жарко
Ответить с цитированием
  #3 (permalink)  
Старый 25.07.2012, 13:03
Интересующийся
Отправить личное сообщение для Stanisov Посмотреть профиль Найти все сообщения от Stanisov
 
Регистрация: 03.01.2012
Сообщений: 17

Вывел консоль лог ключевых функций addTransaction() и addOrder() , все аргументы передаются, все корректно . Но в статистике Google товаров нет
Ответить с цитированием
  #4 (permalink)  
Старый 25.07.2012, 13:05
Интересующийся
Отправить личное сообщение для Stanisov Посмотреть профиль Найти все сообщения от Stanisov
 
Регистрация: 03.01.2012
Сообщений: 17

[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, 'Заказано в один клик'); // метод добавления инфы о товаре
.....
........
}

так вот они , я ж и вызываю их
Ответить с цитированием
  #5 (permalink)  
Старый 25.07.2012, 13:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Stanisov,
Попробуйте вызов Google Analytics делать через таймер с задержкой - возможно одновременное использование HTML Request

setTimeout(function() {//Tут Вызов
},600);
Ответить с цитированием
  #6 (permalink)  
Старый 25.07.2012, 16:25
Интересующийся
Отправить личное сообщение для Stanisov Посмотреть профиль Найти все сообщения от Stanisov
 
Регистрация: 03.01.2012
Сообщений: 17

Нет, все равно не проходит толком . В GA транзакции считает, а товар не добавляет. То есть у меня срабатывает функция addTransaction() только
Ответить с цитированием
  #7 (permalink)  
Старый 25.07.2012, 16:28
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Stanisov,
При вызове через таймер - нужно передать все необходимые переменные для addTransaction , так как таймерный вызов отвязан от функции , в которой запускается и всякие this - не передаются явно - их надо передавать через переменные
Ответить с цитированием
  #8 (permalink)  
Старый 25.07.2012, 18:05
Интересующийся
Отправить личное сообщение для Stanisov Посмотреть профиль Найти все сообщения от Stanisov
 
Регистрация: 03.01.2012
Сообщений: 17

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);						
					}

Ну вот так передаю, тоже не работает ;(
Ответить с цитированием
  #9 (permalink)  
Старый 25.07.2012, 18:19
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Stanisov,

1. Вопрос - А ежели после вывода на страницу "И выводится сообщение что заказ оформлен" - запустить Google Analytics - Работает ?

К примеру реализация Теста такая: (Вставляем на саму страницу (минута для оформления тестового заказа
$(window).load(function () {
   setTimeout(function() {

    //Тут Вызов Google Analytics


   },60000)
});

Последний раз редактировалось Deff, 25.07.2012 в 18:25.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отслеживание событий в Google Analytics fry2 Events/DOM/Window 1 08.05.2012 20:08
Выполнить код после обработки скрипта RasimS Общие вопросы Javascript 2 11.02.2011 15:25
Выполнить код после загрузки изображения EugenyK Events/DOM/Window 2 15.07.2008 10:09