0

説明が下手だったので、この新しいスレッドを作成しましたが、これを編集するように言われました。

新しいテキスト

外部 Web サイトから user_id を受け取る必要があります。ユーザーがサイト B からサイト A にアクセスした場合にのみ、これを受け取る必要があります。しかし、彼が最初にページにアクセスしたときに Cookie の値も取得する必要があるため、これを行う方法を説明してみましょう。

まず、ユーザーが別のドメインから来ているかどうかを確認します。

var ownDomain = location.hostname,
    referrerDomain = document.referrer.split('/')[2],
    author = '';

if ( ownDomain != referrerDomain) {
  var script = document.createElement('script');
  script.src = '//javascript.mamp/json/?callback=setAuthorCookie';
  document.getElementsByTagName('head')[0].appendChild(script);
}

彼がそれを行う場合、コールバックを呼び出す JavaScript を挿入しますsetAuthorCookie()。これは次のようになります。

function setAuthorCookie( data ) {
  var exdate = new Date(),
      exdays = 1,
      value = data['userId'],
      cookie = 'partnerOptimizerId',
      exdate = new Date();

   author = value;

   exdate.setDate(exdate.getDate() + exdays);
   var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
   document.cookie=cookie + "=" + c_value;
}

ご覧のとおり、その関数内に作成者の値を設定したので、作成者の値を console.log アウトして正しい値を取得できるはずです。

console.log( author )

私は何も返しません。これは、私が今行き詰まっているところです。setAutorCookieI の後にいくつかの方法が実行されるためだと思いますがconsole.log( author )、誰かがこれについて私を助けてくれることを望んでいました.authorのローカル変数だからsetAuthorCookieですか?

いくつかのテストの後、 setAuthorCookie が最後の console.log() の後に実行されることがわかります。それが空である理由ですが、誰かがそれを変更する方法を手伝ってくれますか?

4

1 に答える 1

2

getCookie()特定の条件下でのみ何かを返しています:

  if (x==cookie)
  {
    return unescape(y);
  }

したがって、x != cookie の場合、関数には戻り値がありません。したがって、あなたが言うvar author = getCookie( 'partnerOptimizerId' );getCookie()何も返さない場合、author未定義になります。

于 2013-01-31T16:17:46.817 に答える