gpt4 book ai didi

javascript - Phonegap 本地存储返回空结果

转载 作者:行者123 更新时间:2023-11-30 03:37:31 25 4
gpt4 key购买 nike

在应用首次加载时,我从存储(Phonegap 的 WebSQL 存储类型)中检索数据。 Phonegap 存储结果加载正常。直到……

当我转到应用程序中的另一个页面时: <a href="page2.html" rel="external">Link</a>

如果我使用 window.location.href 从第二页返回到该主页在 Javascript 中,我再次检索 WebSQL 数据(与以前相同的功能)。

Phonegap Storage 调用了成功函数(没有错误),但是返回了一个空结果集。它似乎是从我没有存储任何东西的第二个数据库加载的(见下面的编辑)。

如果我强制退出应用程序并重新打开,存储会再次正常加载,这表明数据库中的结果没有被删除。

我在 ondeviceready 之后加载存储被解雇了。有什么问题吗?

注意:
1.这不会发生在模拟器上。仅在真正的 Android 4.0 设备上发生。
2. 此应用程序使用 jQuery/jQuery Mobile。

function ondeviceready() {
db = window.openDatabase("test", "1.0", "test DB", 2000000);
// . . . //
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM table ORDER BY name', [], querysuccess, function(tx, e) {
errorAlert();
});
}), errorCB;
}

编辑:我现在注意到,如果我在第一次加载应用程序时添加一个新行,它会存储在一个数据库中。然后,如果我转到第二页然后返回第一页,然后添加另一行,它也会存储,但是在一个单独的数据库中!(这就是它似乎在做的) .太奇怪了,我看到这种情况发生了。我的所有行都已保存并持久保存,但查询会返回一组不同的结果,具体取决于我是否转到第二页...

还有:由于某种原因,第二页出现 jQuery 错误。我刚刚创建了一个空白页面,其中包含指向 jQuery 的脚本链接,但出现错误。奇怪...不知道这个错误是不是影响了数据库?我正在尝试发现如何解决此错误。

最佳答案

我以前遇到过类似的问题,但我的问题是我试图从 Java 端和 Javascript 端写入同一个数据库。这就是我能够解决它的方法:

  • 首先,我在 Android 模拟器上运行应用程序并使用 DDMS 访问数据库,那时我才意识到两者是在不同的数据库中编写的。

  • 我从使用 WebSQL 改为使用适当的 SQLite 数据库,之后我开始获得一致的结果。它是 phonegap 数据库存储实现的直接替代品,因此无需过多更改代码。请看https://github.com/brodyspark/PhoneGap-SQLitePlugin-Android .

我认为同样重要的是要注意 WebSQL 有一些存储限制,因此您最好使用 SQLite 而不是 WebSQL。请参阅:http://www.steveworkman.com/html5-2/standards/2011/the-limitations-of-websql-and-offline-apps/

希望这有帮助:-)

关于javascript - Phonegap 本地存储返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16407231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com