2011-07-17 3 views
1

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

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

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

+1

Вы используете плагин jQuery Cookie? – alex

+0

Er ... Я думаю, что если вам нужна помощь с некоторым кодом, вы должны * указать * этот код здесь. –

ответ

0

попробовать что-то вроде этого:

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

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

$(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); 
} 

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

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']; 

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

+0

Разве что? И включить плагин? Когда i echo $ viewportHeight после этого, я получаю Undefined index: viewportHeight в /gallery.php в строке 26. (Только что использовал ваш код) – Frank

+0

Это действительно ... Argh! Я не могу заставить это работать! – Frank

+0

Убедитесь, что вы эхо $ viewportHeight после хотя бы одного просмотра страницы. Только после первого представления будет существовать файл cookie и отправляться на последующие запросы. Кроме того, я обновил сценарий: добавлен путь, чтобы сделать его доступным для всего сайта + изменить размер звонка при первой загрузке ... попробуйте сейчас. –

Смежные вопросы