Phonegap设备已经没有响应/解雇

时间:2013-02-08 20:37:36

标签: android cordova

我正在编写一个移动应用程序,用于使用Sqlite在本地存储数据。在过去的4天里,我一直试图找出数据库在Jquery和phonegap完全加载时没有创建的原因。在sqlite中创建语句不起作用,并且回调函数不起作用。设备已经无法运行,但如果检查sqlite支持则会触发。示例代码是某人的其他代码,但同样的事情发生了。有人可以帮帮我吗?

var jqmReady = $.Deferred(),
pgReady = $.Deferred();

// jqm page is ready
$(document).bind("pageinit", jqmReady.resolve);

// phonegap ready
document.addEventListener("deviceready", pgReady.resolve, false);

// all ready, throw a custom 'onDeviceready' event
$.when(jqmReady, pgReady).then(function(){
  $(document).trigger("onDeviceready"); 
});


function onDeviceReady(){
        db.transaction(populateDB, errorCB, successCB);
    }

    //create table and insert some record
    function populateDB(tx) {
        tx.executeSql('CREATE TABLE IF NOT EXISTS SoccerPlayer (id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, Club TEXT NOT NULL)');
        tx.executeSql('INSERT INTO SoccerPlayer(Name,Club) VALUES ("Alexandre Pato", "AC Milan")');
        tx.executeSql('INSERT INTO SoccerPlayer(Name,Club) VALUES ("Van Persie", "Arsenal")');
    }

    //function will be called when an error occurred
    function errorCB(err) {
        alert("Error processing SQL: "+err.code);
    }
    //function will be called when process succeed
    function successCB() {
        alert("success!");
        db.transaction(queryDB,errorCB);
    }

1 个答案:

答案 0 :(得分:0)

我没有在模拟器或物理设备上运行它,但是从查看代码我可以看到一个问题就在后面。试试这个,看看它是否有帮助:

更改

$.when(jqmReady, pgReady).then(function(){
     $(document).trigger("onDeviceready"); 
});

$.when(jqmReady, pgReady).then(function(){
     onDeviceReady();
});

我建议更改的原因是因为$(document).trigger("onDeviceready")正在触发'onDeviceready'事件。你没有监听器设置来捕获该事件,我假设你想要它做的是调用“onDeviceReady()”函数。