2012-06-28 3 views
0

У нас есть форма бронирования, которая отправляется на веб-сайт материнской компании. Поскольку это другой домен, нам необходимо реализовать GA _linkByPost, чтобы передать информацию cookie отслеживания GA по доменам.javascript form.submit() убывающая строка, созданная GA _linkByPost

Как форма бронирования находится в пользовательском элементе .NET, она выполняет обратную передачу. На обратной стороне мы проверяем, завершаем информацию о бронировании и записываем форму обратно клиенту со скрытыми элементами, требуемыми целевым механизмом бронирования, и добавляем строку javascript для отправки формы.

Ниже Javascript функция Я использую для отправки формы:

function postBookingForm() { 
    var thisForm = document.getElementById('PostForm'); 
    _gaq.push(['_linkByPost', thisForm]); 
    thisForm.submit(); 
} 

И соответствующую форму информации:

<form id="PostForm" name="PostForm" action="ClientBookingEngineUrl" method="post" > 
    booking form info in here 
</form> 

Результатом является то, что мы заполнить форму, нажмите отправить который выполняет обратную поездку на сервер, генерирует новую форму и POST-информацию. Все это отлично работает, кроме того, что URL-адрес теряет информацию cookie GA из строки запроса. Если я прокомментирую строку отправки формы и посмотрю на исходный код, я могу видеть информацию cookie GA в querystring, но при публикации я не вижу querystring (используя Fiddler).

Для уточнения: Вышеупомянутая техника работает и делает то, что мы хотим, в отношении данных формы POSTing в систему бронирования и заставляя пользователя там. Если строка отправки прокомментирована, вы можете увидеть форму с измененным действием, в которое добавлено приложение GA (с использованием Firebug). Если форма отправлена ​​с линией отправки, информация о querystring удаляется (подтверждается Fiddler).

Я пропустил что-то очевидное? Есть ли какие-то ошибки в отношении отправки JS, формы POST и повторений? Или есть простой трюк, который мне не хватает?

Приветствия

РЕДАКТИРОВАТЬ 1

странность произошло.

Если я предупреждаю действие формы до и после _gaqPush, мы можем видеть URL-адрес в его состоянии до и после, и это как ожидается.

alert('1 form action = ' + thisForm.action); 
_gaq.push(['_linkByPost', thisForm]); 
alert('2 form action = ' + thisForm.action); 

Alert 1 показывает предварительно измененное действие и предупреждение 2 показывает действие с информацией GA. С оповещениями на месте он отправляет WITH GA информацию в строку запроса. Если я прокомментирую предупреждения, информация GA НЕ находится в строке запроса ...

Я начинаю думать, что форма или что-то не готова, поэтому я пытаюсь подготовить ее с помощью документа JQuery.

EDIT 2

Обертывание вызов метода в документе готового не помогает. Я смущен, почему URL-адрес действия правильный ПОСЛЕ того, как его отображать в предупреждении, но неверно, если я его не предупреждаю.

+0

Спасибо за типографские исправления. Я знаю разницу между свободными и потерянными честными. Я обвиняю его в стрессе :) – Jag

ответ

0

Ответ на этот вопрос для потомков.

Проблема заключается в том, что _qaq (Google Analytics Queue) не успела изменить форму перед вызовом submit() формы.

Решение состоит в том, чтобы направить функцию на объект _gaq, который отправляет форму, чтобы она произошла непосредственно после завершения модификации формы.

function postBookingForm() { 
    var thisForm = document.getElementById('PostForm'); 
    _gaq.push(['_linkByPost', thisForm]); 
    _gaq.push(function() { thisForm.submit(); }); 
} 
+0

Означает ли это, что я могу использовать это вместо задержки? – Jag

+0

Это правильно - это будет работать правильно, не прибегая к задержкам или тайм-ауту, поскольку все вещи, попадающие в очередь, запускаются последовательно в том порядке, в котором они были нажаты, по одному за раз. Таким образом, передача происходит после изменения формы. –

0

Я пробовал простую HTML-страницу, которая вызывает _gaqPush и отправляет немедленно. Это также терпит неудачу. Добавление задержки 1000 мс (по большей части), поэтому я подозреваю, что оповещения просто дали время сценария GA для изменения формы.

Я закрываю/принимаю это, поскольку кажется, что слишком быстро отправил форму после вызова GA.

+0

Не могу согласиться с этим, поскольку я должен ждать. – Jag

Смежные вопросы