2012-05-14 2 views
2

Я пытался научить себя куки в течение последних двух часов и как бы я хотел хранить значения из нескольких полей формы в файл cookie.Значения формы магазина в Cookie

Мне не очень повезло, все примеры, которые я нашел, были очень полезными. Должен ли я сгенерировать их с помощью PHP или JS? Любая обратная связь или удар в правильном направлении были бы высоко оценены!

http://jsfiddle.net/yucM7/

Заранее спасибо!

+0

Сохранение значений формы в файле cookie не имеет большого смысла. Какова ваша конечная цель? Возможно, вам лучше будет хранить их в сеансе. – Corbin

ответ

2

Вот example.

Все, что вам нужно, это JQuery и cookie plugin

Имейте в виду, там уже несколько изменений в HTML коде.

$(document).on('submit', '#myForm', function() { 
    // serialize our form (get string containing field names and values) 
    dataString = $(this).serialize(); 
    // set new cookie 
    $.cookie('formCookie', dataString); 
    return false; 
}); 

$(document).on('click', '#getCookie', function() { 
    // get serialized string from cookie  
    cookieData = $.cookie('formCookie'); 
    // if cookie exists continue 
    if (cookieData != null) { 
     // split cookieData string into an array of fields and their values 
     cookieArray = cookieData.split('&'); 
     // go through each field and split it too to get field name and it's value 
     $.each(cookieArray, function(k, v) { 
      field = v.split('='); 
      // populate field with data 
      $('#myForm [name="'+field[0]+'"]').val(field[1]); 
     }); 
    } 
    return false; 
}); 
+0

Привет, Кейн, Большое спасибо за пример, комментарии фантастические. Как бы мне это сделать, если я не хочу хранить все значения полей в форме. Например, я хотел только сохранить имя и фамилию? – Jamesil

+0

@Jamesil, Вот модифицированная версия кода выше: http://jsfiddle.net/Xxqb6/3/. В принципе, для каждого поля ввода или любого другого поля вы добавляете класс, в моем примере это «подмножество», а затем вы просто используете ту же функцию serialize(), но вместо использования $ (this) .serialize() мы будем использовать $ ('.subset') сериализовать(). –

+0

Приветствия! это хорошо работает. Только один последний вопрос. Если я поместил «@» в поле (для адреса электронной почты) и сохранил его в файл cookie, он возвращает «% 40». Как я могу предотвратить это? – Jamesil

2

Вы можете установить куки с помощью Javascript следующими (см http://www.w3schools.com/js/js_cookies.asp):

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; 
} 

Установка куки с помощью Jquery:$.cookie("example", "foo");

В качестве альтернативы вы можете установить куки с сервера по:

<?php 
    $value = 'something from somewhere'; 
    setcookie("TestCookie", $value);