0

Sqlite を使用してデータをローカルに保存するためのモバイル アプリケーションを作成しています。過去 4 日間、Jquery と phonegap が完全に読み込まれているときにデータベースが作成されない理由を理解しようとしてきました。sqlite の create ステートメントが機能せず、コールバック関数が機能しません。deviceready は機能しませんが、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);
    }
4

1 に答える 1

0

エミュレーターや物理デバイスで実行したことはありませんが、コードを見ると、すぐに1つの問題がわかります。これを試して、それが役立つかどうかを確認してください。

変化する

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

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

変更を提案する理由$(document).trigger("onDeviceready")は、「onDeviceready」イベントをトリガーしているためです。そのイベントをキャッチするためのリスナー設定がありません。あなたが望んでいたのは、「onDeviceReady()」関数を呼び出すことだと思います。

于 2013-02-10T01:28:08.787 に答える