0

親会社のウェブサイトに投稿する予約フォームがあります。これは別のドメインであるため、GA _linkByPost を実装して、ドメイン間で GA 追跡 Cookie 情報を渡す必要があります。

予約フォームは .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 がクエリ文字列から GA Cookie 情報を失うことを除けば、これはすべて正常に機能します。フォーム送信行をコメントアウトしてソースコードを見ると、クエリ文字列に GA Cookie 情報が表示されますが、投稿時に (Fiddler を使用して) クエリ文字列が表示されません。

明確にするために:上記の手法は機能し、フォームデータを予約エンジンに投稿してユーザーをそこに連れて行くことに関して、私たちが望むことを行います。送信行がコメントアウトされている場合、GA が追加された変更されたアクションを含むフォームが表示されます (Firebug を使用)。フォームが送信行で送信されると、クエリ文字列情報が削除されます (Fiddler によって確認されています)。

明らかな何かが欠けていますか?JS の送信、フォームの POST、およびクエリ文字列に関する落とし穴はありますか? または、私が見逃している簡単なトリックはありますか?

乾杯

編集1

異常が発生しました。

_gaqPush の前後でフォーム アクションにアラートを出すと、URL の前後の状態を確認でき、期待どおりです。

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

アラート 1 は変更前のアクションを示し、アラート 2 は GA 情報を含むアクションを示します。アラートを設定すると、クエリ文字列に GA 情報を指定して送信されます。アラートをコメントアウトすると、GA 情報はクエリ文字列に含まれません...

フォームか何かの準備ができていないのではないかと思い始めたので、JQueryのドキュメントを準備して試しています。

編集2

ドキュメントの準備が整った状態でメソッド呼び出しをラップしても役に立ちません。アクション URL がアラートに表示された後は正しいのに、アラートを表示しないと正しくない理由について混乱しています。

4

2 に答える 2

0

_gaqPush を呼び出してすぐに送信する単純な HTML ページを試してみました。これも失敗します。1000ミリ秒の遅延を追加すると(ほとんどの場合)機能するため、アラートがGAスクリプトにフォームを変更する時間を与えただけだと思います。

GA コールの後にフォームを送信するのが早すぎることが原因のように思われるため、これを終了/承認します。

于 2012-06-28T15:11:03.893 に答える