2013-07-23 4 views
0

Я скопировал и использовал getCookie и setCookie из W3Schools (http://www.w3schools.com/js/js_cookies.asp). Вот коды получить и установить:Javascript: Cookie не может быть прочитан на всех HTML-страницах

function setCookie(c_name,value,exdays) 
    { 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 
    document.cookie=c_name + "=" + c_value; 
    } 

    function getCookie(c_name) 
    { 
    var c_value = document.cookie; 
    var c_start = c_value.indexOf(" " + c_name + "="); 
    if (c_start == -1) 
    { 
     c_start = c_value.indexOf(c_name + "="); 
    } 
    if (c_start == -1) 
    { 
     c_value = null; 
    } 
    else 
    { 
     c_start = c_value.indexOf("=", c_start) + 1; 
     var c_end = c_value.indexOf(";", c_start); 
    if (c_end == -1) 
    { 
     c_end = c_value.length; 
    } 
     c_value = unescape(c_value.substring(c_start,c_end)); 
    } 
     return c_value; 
} 

Я Фрист набор печенье в prepareDrive.html странице

setCookie("pathName",path,365); 
setCookie("formatName",ifFormat,365); 

Тогда я назвал прибудет печенье в startInstall.html странице, которая является другим HTML страницы

var path = getCookie("pathName"); 
var ifFormat = getCookie("formatName"); 

, но оба пути и ifFormat равны нулю. Однако, когда я console.log в файле prepareDrive.html, данные есть. Благодаря !!! Это мой первый раз, когда я использую cookie в JS. Я не хочу использовать localstorage для хранения данных. Поскольку некоторые браузеры старой версии не поддерживают эту функцию, не так ли?

+1

Вот совет. W3Schools - довольно ужасный ресурс для изучения (http://w3fools.com). На SO есть много вопросов, которые объясняют, как обрабатывать файлы cookie, а также достойный учебник по MDN (Mozilla Developer Network) и кучу достойных библиотек, которые работают (куки jQuery, если вы попали в эту вещь или Cookies.js, который я только что использовал сегодня и был приятным). W3Schools действительно хороши с SEO. –

ответ

3

Для печенья необходимо указать общий path. Простейшее просто указать корневой домен:

var c_value=escape(value) + "; path=/" + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 

Без этого document.cookie будет default to the current location.pathname, что делает печенье доступны только для текущей страницы.

; путь = путь (например, '/', '/ MYDIR') Если не указано, по умолчанию текущий путь текущего местоположения документа.


Кроме того, я предлагаю иметь взгляд на "little framework" для печенья на MDN.

+0

Спасибо, но после добавления пути он по-прежнему показывает нуль. И даже показать null на текущей странице html. Вот как я проверяю ошибку, может быть, я ошибаюсь. После setCookie ("pathName", путь, 365); Я вызвал console.log ("get cookie information =" + getCookie ("pathName")); немедленно. И он распечатал нуль. –

+0

Хорошо, я нашел проблему !! Благодаря !!! –

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