如何使用变量值创建cookie

时间:2011-07-17 14:09:41

标签: javascript jquery cookies

我需要创建一个javascript cookie以便用PHP做一些事情(确切地说,我需要获取浏览器的视口高度,将其存储在javascript cookie中以便在PHP中获取值)。唯一的问题是我没有javascript经验,我也不明白google的解释。

我希望在Cookie中包含此值(var viewportHeight = $(window).height();)。 但是如何?

(google仅提供带静态值的示例)。

3 个答案:

答案 0 :(得分:0)

尝试这样的事情:

var viewportHeight = $(window).height();
document.cookie = "viewportheight=" + viewportHeight + ";";

答案 1 :(得分:0)

您不能拥有Cookie的动态值。但是,每次窗口调整大小时,您都可以更新cookie:

$(function(){
   $(window).resize(function () { 
      createCookie( 'viewportHeight', $(window).height() );
   });
});

// You should also use some cross-browser cookie functions that make your life a lot easier
// function taken from: http://www.quirksmode.org/js/cookies.html
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);
}

这样您就可以模拟cookie的“dinamic”值。 或者,您可以在每次浏览器调整大小时通过ajax将值发送到php脚本,而不必使用cookie

答案 2 :(得分:0)

对我来说似乎是一个坏主意。您的布局不应该要求服务器端的确切像素尺寸。但是,如果你真的没有其他选择:

使用此jQuery插件:https://github.com/carhartl/jquery-cookie

然后您可以执行以下操作:

// save the window height to a cookie whenever window is resized
$(window).resize(function(){
    $.cookie('viewportHeight', $(window).height(), {path:'/'});
});

// trigger the resize function so it saves the cookie on first load
$(window).load(function(){        
    window.setTimeout(function() {$(window).resize();}, 0);
}

然后在后续请求中从PHP访问它,如下所示:

$viewportHeight = $_COOKIE['viewportHeight'];

请注意,如果您在用户看到第一页之前需要PHP中的cookie值,则无法使用。