【问题标题】:My cookie isn't working when I revisit the page当我重新访问该页面时,我的 cookie 不起作用
【发布时间】:2012-06-08 18:02:13
【问题描述】:

当人们输入我的网址时,我希望他们点击北卡罗来纳州或弗吉尼亚州。在他们点击后,它会将他们重定向到 www.myurl.com/nc 或 www.myurl.com/va。在他们回答了这个问题后,下次他们访问我的网站时,它会将他们重定向到相应的页面,而无需再次单击 NC 或 VA。我的链接正常工作(带我到正确的页面),但是当我返回时,cookie 没有重定向我,我返回到我要求选择状态的同一页面。这是我到目前为止所得到的。我觉得我很接近,但老实说我不知道​​我在做什么。

<p> Please tell us where you live so we can give you information for your location. </p>
<a href="#" onClick="window.location = 'http://www.myurl.com/nc'" value="nc">North Carolina</a><br />
<br />
<a href="#" onClick="window.location = 'http://www.myurl.com/va'" value="va">Virginia</a> 
<script type="text/javascript" src="script.js"></script> 
<script type="text/javascript">
function redirect(state) {     createCookie('state', state, 90);     window.location.href = "http://www.myurl.com/" + nc; } 
</script>

我也有这个脚本在一个单独的文件中:

// JavaScript Document
function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

【问题讨论】:

  • 您是在使用像 Firebug 这样的 JavaScript 调试工具还是 Chrome 的内置工具?
  • 我没有看到你在任何地方打电话给redirect()...
  • 我应该在哪里调用重定向?在我单独的脚本文件中?

标签: javascript redirect cookies


【解决方案1】:

试试这个:

<p> Please tell us where you live so we can give you information for your location. </p>
<a href="#" onClick="redirect('nc');return false" >North Carolina</a><br />
<br />
<a href="#" onClick="redirect('va');return false" >Virginia</a> 
<script type="text/javascript" src="script.js"></script> 
<script type="text/javascript">
function redirect(state) {
    createCookie('state', state, 90);
    window.location.href = "http://www.myurl.com/" + state; 
}
var cookie = readCookie('state');
if (cookie != null) {
    window.location.href = "http://www.myurl.com/" + cookie;
}
</script>

jsfiddle:http://jsfiddle.net/7j8pG/1/

【讨论】:

  • 谢谢您 - 只要将我重定向到正确的页面即可。但是当我重新访问该页面时,它不会将我重定向到正确的页面 - 我必须再次选择状态。我希望设置 cookie 以便它记住并且我不必每次都单击状态(有点像 craigslist)。
  • 感谢您的所有帮助。它在 Firefox 中运行良好,但在 ie 中,它在我有机会点击之前重定向到 VA。此外,当我重新访问该页面时,它会简要显示带有 NC 和 VA 选项的页面,然后重定向。有没有办法让它重定向,所以它不显示启动页面?你帮了大忙。非常感谢。
  • @dkype - 在 ie 中,它可能正在这样做,因为您已经为 va 设置了 cookie。要让它不短暂显示页面,你必须使用 php
  • @dkype - 在页面顶部的 doctype 或 html 之前尝试此 php 代码:&lt;?php if ($_COOKIE['state'] == 'va') { header( 'Location: http://www.myurl.com/va' ); } else if ($_COOKIE['state'] == 'nc') { header( 'Location: http://www.myurl.com/nc' ); } ?&gt;
  • 是的!那行得通,谢谢。实际上,即使使用 php,我仍然可以简要地看到该页面……它使用 php 重定向的速度比使用 javascript 时要快得多。如果您知道一种完全消除查看该页面的方法,那将是惊人的,但如果不是 - 我感谢您的帮助,并将就这样离开。谢谢谢谢谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多