我有两个名为one和two的数组。 one
包含字符串值和two
int值。
我正在尝试:
var messageObject = { 'One': one,
'Two': two};
var serializedJSON = JSON.stringify(messageObject);
var json = JSON.parse(serializedJSON);
alert(json.One);
我得到了#34;未定义",尽管已填充数组。 他们正在从数据库接收数据,如下所示:
db.transaction(function(transaction) {
transaction.executeSql('SELECT * FROM aluno', [], function(transaction, results) {
len = results.rows.length, i;
for (i = 0; i < results.rows.length; i++) {
one[i] = results.rows.item(i).fieldOne;
two[i] = results.rows.item(i).fieldTwo;
}
}, null);
});
参见代码:
答案 0 :(得分:1)
编辑答案:
问题似乎与DB-Query-Code有关。查询或回调从未执行过,请参阅:http://jsfiddle.net/U4C6r/11/
原始答案:
var messageObject = {
'One': one,
'Two': two
};
如果您将密钥定义为字符串,则应按以下方式访问它们:
console.log(json['One']);
如果你想将它们作为对象的属性,你应该这样做:
var messageObject = {
One: one,
Two: two
};
然后您可以像链接那样以链接方式访问数据:
console.log(json.One);
您还应该在IDE中看到不同之处 通过特定的语法 - 突出显示 - 看到了吗? :)
答案 1 :(得分:0)
编辑更新: 当你从webSQL中读取值时检查断点并检查你在循环中得到的对象的结构检查这个obj results.rows.item(i)
还要将脚本更改为此。我假设你有全局var 1 = [];和var 2 = [];声明。
var dynamicArrayContainer = { one : [],
two : []};
db.transaction(function(transaction) {
transaction.executeSql('SELECT * FROM table', [], function(transaction, results) {
for (var i = 0; i < results.rows.length; i++) {
dynamicArrayContainer .one.push(results.rows.item(i).fieldOne);
dynamicArrayContainer .two.push( results.rows.item(i).fieldTwo);
}
}, null);
});
试试这个,直接把你的值作为调试练习
var serializedJSON = JSON.stringify(dynamicArrayContainer);
var json = JSON.parse(serializedJSON);
alert(json.one);
答案 2 :(得分:0)
试试这个:
var messageObject = { One: 'one',
Two: 'two'};
var serializedJSON = JSON.stringify(messageObject);
var json = JSON.parse(serializedJSON);
alert(json.One);
祝你好运
:)
更新:在此回复发布后,Enquirer编辑了查询。此回复适用于原始查询(即当前查询的第一部分)