我有一个包含对象数组的对象。我可以将这些数据保存到chrome.storage中。也能够将数据作为对象返回。但我完全坚持如何阅读这个......
说,我有以下数据:
var x = {'data': [{name: '', id: '', url: '',
'dataquery': [{name: '', url: '', lookfor: '', getback: ''}] }] };
现在说,我将其保存到chrome存储(使用set),然后将此数据作为对象'd'(使用get)返回,如何访问,比如说第一个数组的id或url?不应该是这样的:
d.data[0].url // ??
但这会产生错误。我究竟做错了什么?什么是正确的语法?
编辑,有更多详细信息:以下是用于设置和获取数据的代码:
// SETTING THE DATA
chrome.storage.sync.set(x, function() {
console.log('STORED'); });
// GETTING THE DATA
var d;
chrome.storage.sync.get('data', function(data) {
d = data;
console.log(d);
});
alert(d.data[0].loginurl);
我可以从我的控制台日志中看到数据已经正确存储和检索。我可以在console.log中看到数据(作为对象)(展开时显示数组和所有元素)。
但警报线,出现以下错误: '未捕获的TypeError:无法读取未定义的'
的属性“数据”答案 0 :(得分:0)
您能否向我们提供相关代码的摘录?
我猜你应该这样读:
chrome.storage.sync.get('YOUR_NAME_HERE', function(d) {
console.log(d);
}
你会看到你的回报。
答案 1 :(得分:-2)
我明白了。这是一个简单的错误,已经宣布变量' d'在外面使它成为一个全局变量。但是没有初始化它..
var d; // <- Forgot to initialize the variable
chrome.storage.sync.get('data', function(data) {
d = data;
console.log(d);
});
alert(d.data[0].loginurl);
所以它仍然作为一个局部变量,它的价值超出了&#39; get&#39;功能显示为&#39; undefined&#39;。