将值恢复到 tokeninput 字段 - jquery 错误
Restoring values to tokeninput field - jquery error
我正在尝试从 tokeninput
字段中获取值,将它们保存到本地存储然后稍后检索它们。我收到一个错误。代码:
//Save to storage
var selectedValues = $('#Contacts').tokenInput("get");
console.log(JSON.stringify(selectedValues));
localStorage.setItem('ContactsJSON', JSON.stringify(selectedValues));
//Restore
var names = localStorage.getItem("ContactsJSON");
console.log(names);
$.each(names, function (index, value) {
$("#Contacts").tokenInput("add", value);
});
错误信息是:
Invalid operand to 'in': Object expected
错误显示在 jquery-1.10。2.js (1009,2)
我很确定我的 JSON 是正确的,根据 tokeninput docs,使用 get API:[=17 检索时它应该是正确的格式=]
selector.tokenInput("get");
Gets the array of selected tokens from the tokeninput (each item being an object of the kind {id: x, name: y}).
我在localstorage中看到的数据如下:
[{id":59,"name":"Steve Carrell"},{"id":58,"name":"John Krasinski"},{"id":1,"name":"Jenna Fischer"}]
我认为你的问题是你得到的是字符串,而不是对象。
您应该从本地存储对您的字符串调用 JSON.pase()
。
因此,固定代码应如下所示:
// here you are converting object to string:
localStorage.setItem('ContactsJSON', JSON.stringify(selectedValues));
var names = localStorage.getItem("ContactsJSON");
// here you should convert string back to object
var names_object = JSON.parse(names);
console.log(names_object);
$.each(names_object, function (index, value) {
$("#Contacts").tokenInput("add", value);
});
我正在尝试从 tokeninput
字段中获取值,将它们保存到本地存储然后稍后检索它们。我收到一个错误。代码:
//Save to storage
var selectedValues = $('#Contacts').tokenInput("get");
console.log(JSON.stringify(selectedValues));
localStorage.setItem('ContactsJSON', JSON.stringify(selectedValues));
//Restore
var names = localStorage.getItem("ContactsJSON");
console.log(names);
$.each(names, function (index, value) {
$("#Contacts").tokenInput("add", value);
});
错误信息是:
Invalid operand to 'in': Object expected
错误显示在 jquery-1.10。2.js (1009,2)
我很确定我的 JSON 是正确的,根据 tokeninput docs,使用 get API:[=17 检索时它应该是正确的格式=]
selector.tokenInput("get");
Gets the array of selected tokens from the tokeninput (each item being an object of the kind {id: x, name: y}).
我在localstorage中看到的数据如下:
[{id":59,"name":"Steve Carrell"},{"id":58,"name":"John Krasinski"},{"id":1,"name":"Jenna Fischer"}]
我认为你的问题是你得到的是字符串,而不是对象。
您应该从本地存储对您的字符串调用 JSON.pase()
。
因此,固定代码应如下所示:
// here you are converting object to string:
localStorage.setItem('ContactsJSON', JSON.stringify(selectedValues));
var names = localStorage.getItem("ContactsJSON");
// here you should convert string back to object
var names_object = JSON.parse(names);
console.log(names_object);
$.each(names_object, function (index, value) {
$("#Contacts").tokenInput("add", value);
});