получить и установить значения cookie в позиции массива - PullRequest
0 голосов
/ 24 марта 2012

ОК, у меня есть логика, но я не знаю, как записывать в определенные позиции в файле cookie, разделенные каналом, |

Например - взять печенье с 0 | 0 | 0 | 0

если глобальная переменная установлена ​​в Y, то записать значения c и d во 2-ю и 3-ю позиции (при условии массива), если cookie существует - если cookie не существует, создайте cookie с 0 | 0 | c | d

если глобальная переменная равна нулю, то записать значения a и b в 0 и 1-ю позицию, если cookie существуют - если cookie не существует, создать cookie с a | b | 0 | 0

Я понимаю, как получить cookie-файл и как его разделить, чтобы получить значение, но не знаю, как писать на определенные позиции. Я предполагаю, используя "присоединиться".

* * 1010

1 Ответ

1 голос
/ 24 марта 2012

Предполагая, что желаемое значение куки-файла было названо "pipes", а ваша переменная называлась globalVar, вы можете сделать что-то вроде этого:

var val = readCookie("pipes") || "";
var valArray = val.split("|");
if (valArray.length >= 4) {
    if (globalVar == "Y") {
        valArray[2] = 'c';
        valArray[3] = 'd';
    } else if (globalVar == null) {
        valArray[0] = 'a';
        valArray[1] = 'b';
    }
    val = valArray.join("|");
} else {
    // fully formed cookie value didn't exist
    if (globalVar == "Y") {
        val = "0|0|c|d";
    } else {
        val = "a|b|0|0";
    }
}
createCookie("pipes", val, 365);

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

Из ваших комментариев кажется, что данные являются storeID | storeLocation, и у вас есть два из них.Я бы посоветовал вам просто сделать это:

var store1 = readCookie("store1");    // "1640|Jacob's Point"
var store2 = readCookie("store2");    // "2001|Fred's Point"

Или, если вы хотите создать функцию, вы можете сделать это:

function readStoreInfo(item) {
    var info = readCookie(item);
    if (info) {
        var data = info.split("|");
        return({id: data[0], name: data[1]});
    }
    return(null);
}

function writeStoreInfo(item, obj) {
    var val = obj.id + "|" + obj.name;
    createCookie(item, val, 365);
}

Итак, чтобы прочитать данные для store1, вы просто позвоните:

var store1Info = readStoreInfo("store1");
store1Info.id = 123;
writeStoreInfo("store1", store1Info);

Затем вы можете читать и записывать данные для store1 и store2 независимо.

...