2015-04-22 1 views
3

Je dois définir un cookie lorsqu'un utilisateur clique sur l'un de nos liens d'affiliation et atterrit sur notre site avec "src = uni" dans l'URL. Les URL ressemblera à quelque chose comme ceci:Définir un cookie basé sur l'URL Paramètre

http://www.myadmin.com?src=uni&utm_source=uni&utm_content=[publisher_ID]

Fonction pour créer cookie:

function SetCookie() { 
      var url = window.location.href; 
      if(url.indexOf('?src' + uni) = 1) 
       document.cookie="QueryCookie"; 
    } 

quelqu'un peut me aider en disant où je me trompe dans la création de ce cookie en fonction des paramètres de la requête?

Répondre

2

Quelques choses ici:

function SetCookie() { 
    var url = window.location.search; 
    if(url.indexOf('?src=uni') !== -1) 
     document.cookie="src=uni"; 
} 

1) Utilisez location.search pour affiner votre choix, pas nécessaire, mais moins de place à l'erreur,

2) Utilisez !== -1 pour tester la méthode indexOf. indexOf renvoie "-1" s'il ne trouve pas de correspondance. Et "0" s'il trouve une correspondance au début de la chaîne. La chaîne est "zéro indexé", ce qui signifie que le premier caractère de la chaîne est en position "0".

3) Ajoutez le signe égal = avec le nom de votre paramètre: src=.

4) Aussi, utilisez la chaîne "uni" si c'est ce que vous cherchez, plutôt qu'une variable nommée uni. Si "src" peut être une variété de valeurs, alors nous aurons besoin d'ajouter plus de logique pour en tenir compte.

5) Et lors de l'affectation à document.cookie, utilisez des paires clé/valeur comme dans: key=value.

+0

Merci l'homme, j'ai réparé cela et il ne fonctionne toujours pas. Je veux stocker la clé comme 'src' et sa valeur comme 'uni' mais je ne suis pas sûr pourquoi le code ci-dessus ne répond pas non plus. – Programmermid

+0

@Programmermid Ok, j'ai mis à jour ma réponse pour mettre un cookie nommé "src" à la valeur "uni". Est-ce ce que vous cherchez? – bloodyKnuckles

+0

Ya cela a fonctionné, mais une question rapide ce cookie sera mis à chaque fois que src = uni dans l'url ci-dessous: http://www.myadmin.com?src=uni&utm_src=uni&utm_content=[publisher_ID]? – Programmermid

1

La première chose que vous devez corriger est:

if(url.indexOf('?src' + uni) = 1) 

devrait être (ce contrôle qu'il existe à l'index 1):

if(url.indexOf('?src=' + uni) === 1) 

ou (ce qui vérifie qu'il existe)

if(url.indexOf('?src=' + uni) !== -1) 

Ensuite, vous devez définir src à l'uni et le rendre accessible à l'ensemble du site:

document.cookie="src="+uni+"; path=/; domain=.myadmin.com"; 

Ajout du chemin =/et domaine = .myadmin.com vous permettra d'accéder au cookie à tous les chemins de ce domaine, et la partie de domaine lui permet d'être accessible à tous les sous-domaines (à savoir www.myadmin.com ainsi que blog.myadmin.com, etc.)

donc tous ensemble:

function SetCookie() { 
     var url = window.location.href; 
     if(url.indexOf('?src='+uni) !== -1) 
      document.cookie="src="+uni+"; path=/; domain=.myadmin.com"; 
    } 

Voici une information de base:

http://www.w3schools.com/js/js_cookies.asp

Ou le plus en profondeur, une documentation précise:

https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

+0

Merci l'homme, j'ai réparé cela et il ne fonctionne toujours pas. Avez-vous d'autres suggestions à faire pour que cela fonctionne? – Programmermid

+0

Tout ce que je veux Définir un cookie quand src = uni et si l'utilisateur dirigé à partir de ce lien fait un achat, notre site devrait rechercher ce cookie et s'il est présent, alors la balise que j'ai dans notre ReceiptPage devrait avoir FIRESRC ':' VRAI '. Si le cookie n'est pas présent, l'étiquette doit avoir 'FIRESRC': 'FALSE'. Donc, je veux juste stocker Key comme 'SRC' et sa valeur en tant que 'UNI' dans ce cookie. – Programmermid

+0

Vous pouvez juste le mettre à vrai alors. Mais vous devriez aussi expirer le cookie. Le lien que j'ai montré montre comment faire ça. Vous ne voudriez probablement pas qu'il reste là pour toujours. – WakeskaterX