1

我正在使用 phonegap 开发一个移动应用程序,最初我是使用 WEBSQL 开发的,但现在我计划将它移动到 INDEXDB 上。问题是它在 IOS 上没有直接支持,所以在做了很多研发之后我才知道使用IndexedDB Polyfil 我们也可以在 IOS 上实现它

http://blog.nparashuram.com/2012/10/indexeddb-example-on-cordova-phonegap.html http://nparashuram.com/IndexedDBShim/

可以请一些人帮助我如何实现这一点,因为没有足够的文档,除了这个之外我无法找到任何其他解决方案/api

我已经在 safari 5.1.7 上测试过这个

下面是我的代码和错误图片

var request1 = indexedDB.open(dbName, 5);
request1.onsuccess = function (evt) {
    db = request1.result;
    var transaction = db.transaction(["AcceptedOrders"], "readwrite");
    var objectStore = transaction.objectStore("AcceptedOrders");
    for (var i in data) {

        var request = objectStore.add(data[i]);
        request.onsuccess = function (event) {

            //  alert("am again inserted")
            // event.target.result == customerData[i].ssn;
        };
    }

};
request1.onerror = function (evt) {
    alert("IndexedDB error: " + evt.target.errorCode);
};

错误图像

4

2 回答 2

0

你可以试试我的开源库https://bitbucket.org/ytkyaw/ydn-db/wiki/Home。它适用于 iOS 和 Android。

于 2013-09-12T02:04:22.010 回答
0

一次盲猜

也许您dbName的 WebSQL 数据库名称包含非法字符。polyfill 不会以任何形式翻译您的数据库名称。所以如果你创建一个名为的数据库my-test,它会尝试用这个名字创建一个WebSQL数据库my-test。这个名字对于 IndexedDB 数据库是可以接受的,但是在 WebSQL 中你会因为这个-字符而遇到麻烦。因此,您的数据库名称必须同时匹配 IndexedDBWebSQL 名称约定。

...否则使用调试器

您可以在您的行上设置一个断点alert(...);并使用调试器查看evt对象内部。通过这种方式,您可以获得有关错误本身的更多信息或与我们分享的更多信息。

为此,请在 Safari 高级设置中启用开发菜单,点击F10并转到Developer > Start调试 JavaScript(类似这样,我的 Safari 使用不同的语言)。现在在开发人员窗口中打开“脚本”选项卡,选择您的脚本并通过单击行号设置断点。重新加载页面,它应该在您的错误回调中停止,您可以在其中检查evt对象。

如果这没有帮助,您可以获取 polyfill 的非缩小版本并尝试在其open函数周围设置一些断点以查找此错误的根源。

于 2013-09-11T13:17:44.473 回答