2010-12-10 31 views
1

我使用jQuery創建了一個iPhone Web應用程序& jQTouch,它使用iPhone中Mobile Safari瀏覽器的本地SQLite數據庫。jQuery的問題openDatabase():變量db未定義

該應用程序運行良好,直到幾天前。突然試圖初始化數據庫時,我得到了以下錯誤消息:

function openDB() {  
    db = openDatabase(dbName, '1.0', dbName);  
    db.transaction( 
     function(tx) { 
      tx.executeSql( 
       'CREATE TABLE IF NOT EXISTS energy_days ' + 
       ' ... (omitted) ... ;', 
       [], 
       nullDataHandler, 
       function(tx, error){   
        alert('Error (CREATE TABLE): '+error.message+' (Code '+error.code+')'); 
        return true; 
       } 
      ); 
     }, 
     transactionErrorHandler, 
     nullDataHandler 
    );    
} 

當然,可變db是全局定義:試圖執行下面的代碼發生

TypeError: Result of expression 'db' [undefined] is not an object. 

此錯誤。

現在,此代碼段正在工作。也許這與最新的iOS 4.2更新有關?有了這個更新,整個數據庫的行爲就變得有點奇怪了(例如,它們在設置中不再可見,直到重新啓動整個設備)。

有沒有人有一個想法如何解決這個問題?有沒有一種替代方法來初始化數據庫對象,或者我錯過了一些明顯的東西?

感謝所有回覆,衷心感謝! Roland

回答

0

我想我發現上面的代碼的問題。如前所述,它直到升級到iOS 4(並且仍然在Safari中)。現在看來,最新的Safari Mobile的JS語法已經收緊了。

使用從Apple's documentation(包括短名稱和顯示名稱,大小等)剪下來的完整代碼,它再次在移動Safari中工作。

乾杯!
Roland

+1

是的,更具體地說,我猜你使用db名稱而不是db的大小作爲第三個參數。 – tomdemuyt 2011-06-04 14:23:02