首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Phonegap-使用数据库在联机时插入数据,在脱机时显示数据

Phonegap-使用数据库在联机时插入数据,在脱机时显示数据
EN

Stack Overflow用户
提问于 2013-07-06 12:50:03
回答 2查看 471关注 0票数 0

当设备在线时,我想在数据库中插入数据,如果设备离线,我想显示存储在数据库中的数据。

目前,我在这里解析来自rss feed的数据,并在设备在线时将数据插入数据库,当设备变为offline.And时,我无法显示相同的数据,我也使用以下代码多次尝试在脱机状态下显示数据:

代码语言:javascript
运行
复制
    document.addEventListener("offline", yourCallbackFunction, false);
 $.each(data.responseData.feed.entries, function (e, item) {

                       var titles=item.title;
                       var linked=item.link;

                    s += '<li><div class="itemTitle"><a href="' + item.link + '" target="' + def.TitleLinkTarget + '" >' + item.title + "</a></div>";
                    if (def.ShowPubDate) {
                        i = new Date(item.publishedDate);
                        s += '<div class="itemDate">' + i.toLocaleDateString() + "</div>";
                    }
                    if (def.ShowDesc) {
                        if (def.DescCharacterLimit > 0 && item.content.length > def.DescCharacterLimit) {
                            s += '<div class="itemContent">' + item.content.substr(0, def.DescCharacterLimit) + "...</div>";
                        }
                        else {
                            s += '<div class="itemContent">' + item.content + "</div>";
                       console.log(s);

                        }
                    }

                       // Wait for PhoneGap to load
                       //
                       document.addEventListener("deviceready", onDeviceReady, false);

                       // Populate the database
                       //
                       function populateDB(tx) {

                       tx.executeSql('DROP TABLE IF EXISTS DEMO');
                       tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (title, desc)');
                       tx.executeSql('INSERT INTO DEMO (title, desc) Values(?,?)',[titles,s]);

                       }

                       // Query the database
                       //
                       function queryDB(tx) {

                       tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
                       }

                       // Query the success callback
                       //
                       function querySuccess(tx, results) {

                       var len = results.rows.length;
                       console.log("DEMO table: " + len + " rows found.");
                       for (var i=0; i<len; i++){
                       console.log("Row = " + i + " ID = " + results.rows.item(i).title + " Data =  " + results.rows.item(i).desc);

    $("#apps ul").append('<li><a href="results.rows.item(i).desc"><span class="tab">' +results.rows.item(i).desc+'</span></a></li>');

                       }


                       }
                       document.addEventListener("offline", querySuccess, false);
EN

回答 2

Stack Overflow用户

发布于 2013-07-06 13:06:46

您是否从"ondeviceready“回调中触发了该事件?我这么问是因为这是一个常见的错误,但如果您希望任何人都能看到错误所在,那么您需要向我们展示您的代码。无论如何,你可以总是使用navigator.connection.type属性,如果你想重新发明轮子,你可以将你的回调函数绑定到当connection.type为none时触发的事件。更多细节:http://docs.phonegap.com/en/2.9.0/cordova_connection_connection.md.html#Connection:你有没有检查数据是否真的存储在你的本地数据库中?在请求任意帮助之前,请尝试准确地了解问题所在。

票数 0
EN

Stack Overflow用户

发布于 2013-07-07 22:26:54

正如我所想的那样,在设备准备就绪之前添加了离线事件侦听器,这意味着在从phonegap文件加载添加事件侦听器所需的函数之前。正确的写法是:

代码语言:javascript
运行
复制
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
    document.addEventListener("offline", querySuccess, false);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17499758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档