2010-12-10 2 views
1

Я создал веб-приложение iPhone с jQuery & jQTouch, использующий локальную базу данных SQLite браузера Mobile Safari в iPhone.Проблема с jQuery openDatabase(): переменная db не определена

Приложение работает отлично, вплоть до нескольких дней назад. Вдруг я получаю следующее сообщение об ошибке при попытке инициализировать базу данных:

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

Эта ошибка возникает при попытке выполнить следующий код:

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 определяется глобально.

Теперь этот сегмент кода работал. Возможно, это связано с последним обновлением iOS 4.2? С этим обновлением поведение всей базы данных стало странным (например, они больше не видны в настройках, пока вы не перезапустите все устройство).

У кого-нибудь есть идея, как это исправить? Есть ли альтернативный способ инициализации объекта базы данных, или я пропущу что-то очевидное?

благодарит за все отзывы, они искренне ценятся! Roland

ответ

0

Я думаю, что нашел проблему с кодом выше. Как уже упоминалось, он работал вплоть до обновления до iOS 4 (и до сих пор работает в Safari). Теперь кажется, что синтаксис JS самого последнего Safari Mobile был затянут.

Использование полного кода, снятого с Apple's documentation (включая короткое и отображаемое имя, размер и т. Д.), Снова работает в Mobile Safari.

Cheers!
Roland

+1

Да, более конкретно, я полагаю, вы использовали имя db вместо размера db в качестве третьего параметра. – tomdemuyt 2011-06-04 14:23:02