根据 url 参数设置 Cookie

Set a Cookie based on url Parameter

每当用户点击我们的附属链接之一并在 URL 中使用 "src=uni" 登陆我们的网站时,我需要设置一个 cookie。 URLs 看起来像这样:

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

创建cookie的函数:

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

有人可以帮助我告诉我在根据查询参数创建此 Cookie 时哪里出错了吗?

您需要修复的第一件事是:

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

应该是(这检查它是否存在于索引 1):

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

或(这会检查它是否存在)

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

接下来,您需要将 src 设置为 uni 并使其可供整个站点访问:

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

添加 path=/ 和 domain=.myadmin.com 将允许您在该域的所有路径上访问 cookie,并且域部分允许它在所有子域(即 www.myadmin.com 以及博客。myadmin.com,等等)

所以一起:

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

这是一些基本信息:

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

或更深入、更准确的文档:

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

这里有几件事:

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

1) 使用location.search来缩小你的范围,不是必须的,但错误的空间较小,

2) 使用!== -1 测试indexOf 方法。 indexOf returns "-1" 如果找不到匹配项。并且 "0" 如果它在字符串的开头找到匹配项。字符串是 "zero indexed" 这意味着字符串中的第一个字符位于位置“0”。

3) 添加等号 = 以及您的参数名称:src=.

4) 此外,如果这是您要查找的内容,请使用字符串 "uni",而不是名为 uni 的变量。如果 "src" 可以是各种值,那么我们需要添加更多逻辑来说明这一点。

5) 并且在分配给 document.cookie 时使用 key/value 对,如:key=value.