【问题标题】:Set a Cookie based on url Parameter根据 url 参数设置 Cookie
【发布时间】:2015-06-30 12:05:25
【问题描述】:

每当用户点击我们的一个附属链接并在 URL 中带有“src=uni”的情况下登陆我们的网站时,我都需要设置一个 cookie。 URL 将如下所示:

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 时哪里出错了吗?

【问题讨论】:

    标签: javascript url cookies query-string affiliate


    【解决方案1】:

    这里有几件事:

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

    1) 使用location.search 缩小范围,不是必须的,但可以减少出错的空间,

    2) 使用!== -1 测试indexOf 方法。 indexOf 如果找不到匹配项,则返回 "-1""0" 如果它在字符串的开头找到匹配项。字符串是“零索引”,这意味着字符串中的第一个字符在位置“0”。

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

    4) 另外,如果您正在寻找字符串,请使用字符串 "uni",而不是名为 uni 的变量。如果 "src" 可以是多种值,那么我们需要添加更多的逻辑来解决这个问题。

    5) 当分配给document.cookie 时,使用键/值对,如:key=value

    【讨论】:

    • 谢谢伙计,我解决了这个问题,但它仍然无法正常工作。我想将密钥存储为“src”,将其值存储为“uni”,但我不确定为什么上面的代码也没有响应。
    • @Programmermid 好的,我更新了我的响应,将一个名为“src”的 cookie 设置为值“uni”。这就是你要找的东西吗?
    • 是的,它起作用了,但是一个简单的问题是只要 src=uni 在下面的 url 中设置这个 cookie:myadmin.com?src=uni&utm_src=uni&utm_content=[publisher_…?
    • @Programmermid 是的,任何“src=uni”的出现都会触发它,甚至是“utm_src=uni”,所以我改变了我的回应,将其限制为“?src=uni”。现在只有最初的“src=uni”会触发它。
    • 谢谢你的帮助。
    【解决方案2】:

    您需要解决的第一件事是:

    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 以及blog.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

    【讨论】:

    • 谢谢伙计,我解决了这个问题,但它仍然无法正常工作。您还有其他一些建议我应该考虑一下以完成这项工作吗?
    • 整个事情是我想在 src=uni 时设置一个 cookie,然后如果用户通过此链接进行购买,我们的网站应该寻找这个 cookie,如果它存在,那么我的标签在我们的 ReceiptPage 中应该有 'FIRESRC' : 'TRUE'。如果 cookie 不存在,标签应该有 'FIRESRC' : 'FALSE'。所以我只想在这个 cookie 中将 Key 存储为“SRC”,并将其值存储为“UNI”。
    • 你可以把它设置为true。但是您也应该使 cookie 过期。我展示的链接显示了如何做到这一点。您可能不希望它永远留在那里。
    • 不要忘记“=”符号,只是添加了那个,加上“uni”这个词是 UNI 还是一个变化的变量?
    • "UNI" 是我在收据页面中的一个变量,用于跟踪销售详情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2012-12-29
    • 2014-11-09
    • 2014-11-18
    相关资源
    最近更新 更多