Сломанная строка в куки после амперсанда (javascript) - PullRequest
2 голосов
/ 08 ноября 2010

У меня небольшая проблема в том, что строка, которую я читаю из cookie, разрывается после амперсанда.Так, например, строка «привет и мир» будет просто отображать «привет».Это строка, которая является коротким кодом и преобразуется во что-то более значимое с помощью функции переключателя, а затем отображается в текстовом поле.Функция переключения работает нормально, но, очевидно, что если она не читает всю строку из файла cookie, она не сможет найти короткий код в функции переключения.

В настоящее время я использую следующий код для чтения файла cookie ...

document.example.textfield.value = switchFunction(unescape(coalesce($_GET['example'],readCookie('_cookie'))));

Если вы хотите, чтобы я предоставил дополнительную информацию, пожалуйста, дайте мне знать.Это мой первый пост здесь, поэтому заранее извиняюсь, если что-то не так или неясно.

Спасибо за помощь.

РЕДАКТИРОВАТЬ

Функция SwitchFunction выглядит следующим образом ..

function SwitchFuntion(Code){
    switch(Code){
       case 'text & text, Text' : return 'new meaningful text'; break;
    }
}

и т.д..

Функция readCookie выглядит следующим образом ...

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

1 Ответ

4 голосов
/ 28 февраля 2011

Я думаю, что столкнулся с подобной проблемой в приложении ASP.NET MVC.

Когда я сохраняю строку, содержащую амперсанды, в пару имя / значение файла cookie, она фактически разбивается на серию именпары значений

например, попытка сохранить ("value","cookiedata123&book=2&page=0") приведет к созданию 3 пар значений имени "value"="cookiedata123"; "book"="2"; and "page"="0".

. Я решил это с помощью URL-адреса. Кодирование значения перед записью в cookie иURL Расшифровка это, как только я прочитал это.В .net вызовы выглядят так:

// Encode
return System.Web.HttpUtility.UrlEncode(cookieData);

// Decode
return System.Web.HttpUtility.UrlDecode(encodedCookieData);

Он заботится о любых амперсандах, знаках равенства и т. Д., Которые могут вызвать проблемы.Смотрите этот пост здесь для информации о символах, которые разрешены в куки. Допустимые символы в куки

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