2013-05-06 101 views
1

在應用程序的第一次加載時,我從存儲中檢索數據(Phonegap的WebSQL存儲類型)。 Phonegap存儲結果加載正常。直到...Phonegap本地存儲返回空結果

當我去到另一個網頁的應用程序: <a href="page2.html" rel="external">Link</a>

如果我從在Javascript使用window.location.href第二頁返回到該主網頁,我再次獲得的WebSQL數據(相同的功能像之前一樣)。

Phonegap Storage調用成功函數(無錯誤),但用空結果集。它似乎從第二個數據庫加載,我沒有存儲任何內容(見下面的編輯)。

如果我強制退出應用程序並重新打開,存儲將再次加載正常,這說明數據庫中的結果不會被刪除。

我在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; 
} 

編輯: 我現在,如果我添加一個新的行第一次加載應用程序時,它存儲在一個數據庫中注意到。然後,如果我轉到第二頁然後回到第一頁,然後再添加另一行,它也會存儲,但是在單獨的數據庫中!(所以這就是它所做的)。很奇怪,我看到這發生了。我的所有行被保存和持久性,但查詢將返回不同組取決於我是否到了第二頁或沒有結果的......

另外: 第二頁是有一些jQuery的錯誤原因。我剛剛創建了一個帶有腳本鏈接到jQuery的空白頁面,並且出現錯誤。奇怪......我不知道這個錯誤是否影響到數據庫?我試圖發現如何解決這個錯誤。

+0

您是否在表中插入任何記錄? – 2013-05-07 05:32:12

+0

@VickyGonsalves是的,首先加載我插入記錄。但是,在離開並返回第一頁後,我沒有添加任何新記錄。這就是爲什麼它回到第一頁後沒有返回結果 - 因爲它就像創建第二個數據庫一樣。請參閱編輯。 – Hope4You 2013-05-07 17:43:51

+0

是在iOS上工作嗎? – 2013-05-10 04:22:44

回答

1

我以前遇到類似這個問題,但我的問題是我試圖從Java端和Javascript端寫入相同的數據庫。這就是我如何能夠解決這個問題:

  • 首先我跑在Android模擬器的應用程序,並使用DDMS來訪問數據庫,這是當我意識到兩人在不同的數據庫進行寫作。

  • 我從使用WebSQL更改爲使用正確的SQLite數據庫,然後我開始獲得一致的結果。它是phonegap實現數據庫存儲的直接替代品,因此不需要更改代碼。請參閱https://github.com/brodyspark/PhoneGap-SQLitePlugin-Android

我想這也是必須注意的是WebSQL有一定的存儲限制,所以你可能會使用SQLiteWebSQL會更好。請參閱:http://www.steveworkman.com/html5-2/standards/2011/the-limitations-of-websql-and-offline-apps/

希望這有助於:-)

+0

良好的信息和良好的聯繫。現在,我將堅持使用我的解決方案的WebSQL,但也許我會在未來:)切換 – Hope4You 2013-05-17 17:25:42

+0

我有更多的數據庫問題,所以我只是切換到pgsqlite,迄今如此好,謝謝。 – Hope4You 2013-05-22 15:48:24

+0

太棒了。不錯的選擇,你不能用sqlite出錯。我很高興你有你的問題排序;-) – Sthe 2013-05-23 06:15:28

0

我做了什麼我現在通過Ajax加載外部HTML頁面:

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

我也切換到pgsqlite建議。