Javascript Chrome扩展名:StorageArea.Set键作为字符串传递
晚上好, 我正在尝试将关联数组保存到chrome.storage.local中,如下所示:Javascript Chrome扩展名:StorageArea.Set键作为字符串传递,javascript,google-chrome-extension,Javascript,Google Chrome Extension,晚上好, 我正在尝试将关联数组保存到chrome.storage.local中,如下所示: var keyName = 'name'; var data = //grabbed from an Ajax call saveData(keyName, data); function saveData(keyName, data){ console.log("saving with key: "+keyName); chrome.storage.local.set({keyName:dat
var keyName = 'name';
var data = //grabbed from an Ajax call
saveData(keyName, data);
function saveData(keyName, data){
console.log("saving with key: "+keyName);
chrome.storage.local.set({keyName:data});
}
要检查以确保数据正确保存,我加载:
function loadData(keyName){
console.log("loading: "+keyName);
chrome.storage.local.get(keyName, function(result){
console.log(result);
});
}
日志显示它正在尝试加载正确的密钥名,但什么也没有出现。然后我尝试调用loadData(null),它将显示本地存储的全部内容,我发现:
Object {keyName: Array[3]}
keyName: Array[3]
__proto__: Object
我的数据!但它保存的密钥是“keyName”,而不是“name”。saveData中的日志输出它是“使用键“name”保存”,但它是使用键“keyName”保存的
谢谢 多么奇怪
看来我的问题和
他们找到的答案是将JSON{keyName:data}转换为一个对象:
var obj = {};
obj[keyName] = data;
chrome.storage.local.set(obj);
这很有效
这是因为JSON字段自动作为字符串传递吗 你是对的,
{key:value}
和{key:value}
是等价的,而{key:value}
和{key:value}
则不是。