这是有问题的代码。我一直在努力工作。
问题是,回调中的变量结果中没有任何行。
但这仅存在于Safari中。 Chrome完美运行。
Safari和Chrome上的数据库在数据库中显示正确的值。
结果变量中有一个有趣的属性:
SQLResultSet
insertId: Error: InvalidAccessError: DOM Exception 15
但是行数组不存在。
db.transaction(function (tx) {
tx.executeSql("INSERT INTO QUIZZES (id,name,completed,icon) VALUES (coalesce((SELECT max(id) FROM QUIZZES),0)+1,?,0,?)", [json.name,json.icon],
function (tx, result) {
console.log('Inserted Quiz. Selecting Quiz');
tx.executeSql("SELECT * FROM QUIZZES ", [],
function (tx, result) {
console.log(result);
var quizid = result.rows[0].id;
console.log(quizid);
},
errorCB);
});
},
errorCB);
我尝试过的是通过db.transaction(...在回调中)将我的代码从一个事务重新处理到多个单独的DB调用。 我还尝试重写查询本身,或编写将在100%的时间内返回正确结果的查询。然而,无处可去。
提前感谢您的帮助
答案 0 :(得分:5)
问题在于Chrome在构建代码方面要宽松得多。
应从查询中选择结果:通过
results.rows.item(0).id;
而不是
result.rows[0].id;
注意该项目。
这解决了我的问题。