【问题标题】:Setting a cookie with Javascript [duplicate]使用 Javascript 设置 cookie [重复]
【发布时间】:2014-01-03 10:29:21
【问题描述】:

我正在尝试构建我的第一个移动应用程序,它需要连接到我的 mysql 数据库并使用 json 返回数据。这很好,目前我有一个登录系统,一旦确定用户名和密码存在,它就会返回成功消息。

下一步我想在我的页面上使用 ajax 连接到我的数据库并返回一些数据。现在我想要返回的数据只需要是该用户的数据。

所以我的想法也是我需要一些建议的地方是,当返回成功消息时,我将输入到登录表单中的用户名设置为 cookie,然后我可以使用该 cookie 来构成我的一部分吗?查询?

这是可能的还是有更好的方法?,我是使用 Javascript 开发的新手,通常只使用 php,所以任何建议都会很受欢迎。

谢谢

【问题讨论】:

标签: javascript html cookies


【解决方案1】:

您的问题分为两部分。

(1) 使用 JavaScript 管理 cookie:

首先,您可以创建几个帮助函数,让您可以更轻松地在任何地方设置/获取 cookie:

function setCookie(name, value, exp_y, exp_m, exp_d) {
    var cookie_string = name + "=" + escape(value);
    var expires = new Date(exp_y, exp_m, exp_d);
    cookie_string += "; expires=" + expires.toGMTString();
    document.cookie = cookie_string;
}

function getCookie(cookie_name) {
    var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');
    return results ? unescape(results[2]) : null;
} 

现在,您可以根据需要调用这些辅助函数。在您的用例中,当您的身份验证返回 'success' 标志时,您将 cookie 设置为“userName”,如下所示:

setCookie('myCookie', userName, 2050, 1, 1);

请注意,在上面的示例中,我们将 2050 作为任意高值传递,以便此 cookie 不会过期。否则,您可以完全保留“expires”标志以创建仅限会话的 cookie。

每当您需要调用“userName”以传递给 AJAX 调用时,您都会获得 cookie:

var userName = getCookie('myCookie');

(2) ... 有更好的方法吗?

是的。身份验证成功后,您将“userName”保存在服务器端的会话变量中。现在,只要您在查询中需要当前登录的“userName”,您只需使用该会话变量。一旦用户注销,您就清除了会话。一次,会话超时会话自动清除。因此,您可以免于做家务。

希望对您有所帮助。

【讨论】:

  • 谢谢你,我想我只是错过了重点,谢谢你的解释,非常感谢
【解决方案2】:

试试这个简单的方法:

document.cookie ='cookie1=test; expires=Fri, 3 Aug 2013 20:47:11 UTC; path=/'

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 2013-11-28
    • 2017-04-07
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多