1

アプリの最初の読み込みで、ストレージ (Phonegap の WebSQL ストレージ タイプ) からデータを取得します。Phonegap ストレージの結果は正常に読み込まれます。それまで...

アプリの別のページに移動すると: <a href="page2.html" rel="external">Link</a>

Javascriptを使用して 2 ページ目からメイン ページに戻るとwindow.location.href、WebSQL データを再度取得します (以前と同じ機能)。

Phonegap Storage は成功関数 (エラーなし) を呼び出しますが、結果セットは空です。何も保存していない2番目のデータベースからロードしているようです(以下の編集を参照)。

アプリを強制終了して再度開くと、ストレージが再び正常に読み込まれ、DB の結果が削除されていないことがわかります。

起動後にストレージをロードします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;
}

編集:アプリが最初に読み込まれたときに新しい行を追加すると、1 つのデータベースに保存されることに気付きました。次に、2 番目のページに移動してから最初のページに戻り、別の行を追加すると、それも保存されますが、別のデータベースに保存されます。(それがやっているようです)。とても奇妙です、私はこれが起こっているのを見ます。すべての行は保存されて永続的ですが、2 番目のページに移動したかどうかに応じて、クエリは異なるグループの結果を返します...

また: 2 番目のページには、何らかの理由で jQuery エラーが発生しています。jQuery へのスクリプト リンクを含む空白のページを作成したところ、エラーが発生しました。奇妙な...このエラーはデータベースに影響を与えているのでしょうか? このエラーを解決する方法を見つけようとしています。

4

2 に答える 2

1

以前にこれに似た問題に遭遇したことがありますが、私の問題は、Java 側と Javascript 側から同じデータベースに書き込もうとしていたことでした。これは私がそれを解決することができた方法です:

  • まず、Android シミュレーターでアプリを実行し、DDMS を使用してデータベースにアクセスしました。そのとき、この 2 つが異なるデータベースに書き込みを行っていることに気付きました。

  • WebSQLから適切なデータベースを使用するように変更したところSQLite、その後一貫した結果が得られるようになりました。これは phonegap のデータベース ストレージの実装を簡単に置き換えるものであるため、コードを大幅に変更する必要はありません。https://github.com/brodyspark/PhoneGap-SQLitePlugin-Androidを参照してください。

にはいくつかのストレージ制限があることに注意することも重要だと思うので、それを使用したWebSQLほうがよいかもしれません。参照してください: http://www.steveworkman.com/html5-2/standards/2011/the-limitations-of-websql-and-offline-apps/SQLiteWebSQL

お役に立てれば :-)

于 2013-05-16T07:39:42.977 に答える
0

私がやったことは、Ajax を介して外部 HTML ページをロードすることです。

$.mobile.changePage("page2.html");

また、推奨されているように pgsqlite に切り替えました。

于 2013-05-09T23:29:05.290 に答える