Как создать cookie со значением переменной - PullRequest
1 голос
/ 17 июля 2011

Мне нужно создать файл cookie javascript, чтобы что-то делать с PHP (точнее, мне нужно получить высоту окна просмотра браузера, сохранить его в файле cookie javascript, чтобы получить значение внутри PHP).Единственная проблема в том, что у меня нет опыта работы с JavaScript, и я не понимаю объяснения Google.

Я бы хотел, чтобы это значение (var viewportHeight = $(window).height();) было внутри куки.Но как?

(Google дает только примеры со статическим значением).

Ответы [ 3 ]

0 голосов
/ 17 июля 2011

Вы не можете иметь динамические значения для 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);
}

Таким образом, вы можете смоделировать "динамические" значения для куки. В качестве альтернативы, вы можете просто отправить значение через ajax в php-скрипт каждый раз, когда размер браузера изменяется, без необходимости использовать куки вообще

0 голосов
/ 17 июля 2011

Мне кажется, это плохая идея. Ваш макет не должен требовать точных размеров в пикселях на стороне сервера. Но, если у вас действительно нет другого выбора:

Используйте этот плагин 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'];

Обратите внимание, что если вам нужно значение cookie в PHP до того, как пользователь увидит первую страницу, это не будет работать.

0 голосов
/ 17 июля 2011

попробуйте что-то вроде этого:

var viewportHeight = $(window).height();
document.cookie = "viewportheight=" + viewportHeight + ";";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...