Проблема с jQuery openDatabase (): переменная db не определена - PullRequest
1 голос
/ 10 декабря 2010

Я создал iPhone Web App с jQuery & jQTouch, который использует локальную базу данных SQLite браузера Mobile Safari в iPhone.

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

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

1 Ответ

0 голосов
/ 25 января 2011

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

Используя полный код, полученный из Документация Apple (включая краткое и отображаемое имя, размер и т. Д.), Он снова работает в Mobile Safari.

Ура!
Roland

...