我正在使用CookieJar来读取和写入一个对象数组。
在我的ClickButton函数中,我会读取现有的cookie并在我再次写入之前添加到对象数组中。
以下是要保存的JSON字符串:
[{"id":"3","value":"33333","text":"Bbbbb"},
[{"id":"3","value":"33333","text":"Bbbbb"},
[{"id":"5","value":"55555","text":"xxxxxx"}]]]
我真的想要:
[{"id":"3","value":"33333","text":"Bbbbb"},
{"id":"3","value":"33333","text":"Bbbbb"},
{"id":"5","value":"55555","text":"xxxxxx"}]
任何想法我在这里做错了什么?我挣扎了这一天超过一天了:))
代码:
<script type="text/javascript">
function Display() {
jar = new CookieJar({
expires: 3600, // seconds
path: '/'
});
var itemArray = jar.get("Items");
if (itemArray) {
tmpDiv.innerHTML += itemArray.toJSONString() + '<br/>';
for (var i = 0; i < itemArray.length; i++) {
tmpDiv.innerHTML += itemArray[i].item[0].value + '<br/>';
}
}
}
function ClickButton(id, value, text) {
jar = new CookieJar({
expires: 3600, // seconds
path: '/'
});
var tmpA = jar.get("Items");
var items = new Array;
items.push({ "id": id, "value": value, "text": text });
// If any existing values in the cookie, load and add to Array
if (tmpA != null)
items.push(tmpA);
tmpDiv.innerHTML += items.toJSONString() + "<br/>";
jar.put("Items", items);
}
</script>
答案 0 :(得分:3)
每次单击按钮时,您都会创建一个名为items
的新数组,然后将名为tmpA
的旧数组添加到其中。然后,你隐藏items
,它现在里面有一个新的子数组(代表前一个值,它本身就是一个数组)。
而不是:
if (tmpA != null)
items.push(tmpA);
你应该:
if (tmpA != null)
items = items.concat(tmpA); // this will merge the two arrays