Как я могу написать куки-файлы JavaScript, чтобы сохранить данные постоянными после перезагрузки страницы в моей форме? - PullRequest
0 голосов
/ 09 июня 2010

Я пытаюсь научиться писать cookie-файлы, чтобы сохранять данные в моей кнопке CookieButton1 постоянными и выживать при обновлении и перезагрузке страницы. Как я могу сделать это в JavaScript? Я предоставил свой исходный код. Любые советы, ссылки или учебники будут очень полезны. Если вы перейдете к [http://iqlusion.net/test.html][1] и нажмете «Пусто1», он начнет задавать вам вопросы. Когда закончено, он сохраняет все в CookieButton1. Но когда я обновляю свой браузер, данные сбрасываются и исчезают.

Спасибо!

<html>
<head>
<title>no_cookies>
</head>

<script type="text/javascript" >

    function setCookie(c_name,value,expiredays)

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

    function getCookie(c_name)

{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

    function checkCookie()

{
CookieButton1=getCookie('CookieButton1');
if (CookieButton1!=null && CookieButton1!="")
  {
  alert('Welcome again '+CookieButton1+'!');
  }
else
  {

  if (CookieButton1!=null && CookieButton1!="")
    {
    setCookie('CookieButton1',CookieButton1,365);
    }
  }
}

var Can1Set = "false";

function Can1()
{
   if (Can1Set == "false")
   {
      Can1Title = prompt("What do you want to name this new canned response?","");
      Can1State = prompt("Enter a ticket state (open or closed)","closed");
      Can1Response = prompt("Enter the canned response:","");
      Can1Points = prompt("What point percentage do you want to assign? (0-10)","2.5");

      // Set the "Empty 1" button text to the new name the user specified
      document.CookieTest.CookieButton1.value = Can1Title;

      // Set the cookie here, and then set the Can1Set variable to true
      document.cookie = "CookieButton1"; 
      alert(document.cookie); 

      Can1Set = true;
   }else{
      document.TestForm.TestStateDropDownBox.value = Can1State;
      document.TestForm.TestPointsDropDownBox.value = Can1Points;
      document.TestForm.TestTextArea.value = Can1Response;

      // document.TestForm.submit();

   }
}
</script>

<form name=TestForm>
State: <select name=TestStateDropDownBox>
<option value=new selected>New</option>
<option value=open selected>Open</option>
<option value=closed>Closed</option>

</select>

Points: <select name=TestPointsDropDownBox>
<option value=1>1</option>
<option value=1.5>1.5</option>
<option value=2>2</option>
<option value=2.5>2.5</option>
<option value=3>3</option>
<option value=3.5>3.5</option>
<option value=4>4</option>
<option value=4.5>4.5</option>
<option value=5>5</option>
<option value=5.5>5.5</option>
<option value=6>6</option>
<option value=6.5>6.5</option>
<option value=7>7</option>
<option value=7.5>7.5</option>
<option value=8>8</option>
<option value=8.5>8.5</option>
<option value=9>9</option>
<option value=9.5>9.5</option>
<option value=10>10</option>
</select>
<p>

Ticket information:<br>
<textarea name=TestTextArea cols=50 rows=7></textarea>
</form>

<form name=CookieTest>

<input type=button name=CookieButton1 value="Empty 1" onClick="javascript:Can1()">

</form>

Ответы [ 3 ]

0 голосов
/ 09 июня 2010

document.cookie = "CookieButton1";

Все, что мы делаем, это устанавливаем cookie без значения, только имя. Файлы cookie определяются как пары «имя = значение».

Это должно выглядеть так (или эквивалентно) document.cookie = 'cookieID = CookieButton1';

Установка document.cookie = НЕ будет перезаписывать существующие куки, просто добавьте информацию в установленный куки.

Если вы хотите удалить все файлы cookie, установленные ВАШИМ доменом, вы всегда можете использовать следующий скрипт

function delCookie() {
    var new_date = new Date()
    new_date = new_date.toGMTString()
    var thecookie = document.cookie.split(";")
    for (var i = 0; i < thecookie.length; i++) {
        document.cookie = thecookie[i] + "; expires =" + new_date
    }
}

Если вам нужно удалить куки по отдельности, у вас будет достаточно функции removeCookie, но только если она находится в паре имя = значение. В противном случае ваш файл cookie непригоден для использования, поскольку он не будет содержать никаких данных, только имя.

0 голосов
/ 07 марта 2014

Ваше значение cookie работает так же, как сохранение данных. Да, однако после нажатия кнопки «Обновить» переменная can1set возвращается к значению false, поэтому браузер видит его как null при запуске checkCookie() функция. В моей программе чата, над которой я сейчас работаю, у меня была проблема с симуляцией, пока я не установил переменную в своей функции checkCookie() для проверки. Таким образом, я не всегда проверял значение false и возвращал null в мой оператор if.

вот так ...

function checkCookie()
{
var username=getCookie("username");
if (username!=null && username!="")
  {
    //if username is NOT null and is not blank asigns it to idname
  document.getElementById("idname").innerHTML= document.getElementById("idname").innerHTML +=  username;
  }
else 
  {
     //if username IS null or blank prompt  user to enter name
  username=prompt("Please enter your name:","");
  if (username!=null && username!="")
    {
    setCookie("username",username,1);
    }
  else
    {
     //if user submits a null or blank value close browser
    byebye();
    }
  }
}
0 голосов
/ 09 июня 2010
// Set the cookie here, and then set the Can1Set variable to true
document.CookieTest.CookieButton1 = "CookieButton1";

Вы не устанавливаете здесь cookie.Вы пытаетесь изменить элемент кнопки с именем CookieButton1 формы с именем CookieTest на строковое значение "CookieButton1".Это привело бы к ошибке JavaScript в среднем веб-браузере.

Чтобы установить настоящий cookie, вам нужно document.cookie.Вы можете найти небольшой учебник в w3schools .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...