PhoneGap вложенный executeSql не работает в эмуляторе iPad - PullRequest
1 голос
/ 06 февраля 2012

Каким-то образом мое приложение отлично работает в Win-Safari, но почему-то не в завернутом PhoneGap. Это фрагмент:

// working db connection
db.transaction(function(tx) {
  tx.executeSql('SELECT * FROM tbl', [], function(tx, rs){
    // do something with the result

    tx.executeSql('SELECT * FROM another_tbl', [], function(txTwo, rsTwo){
      // do something with the result

      // further nesting ...

    }, errorHandler, successHandler);

  }, errorHandler, successHandler);
}

Первый набор результатов правильный, и я могу console.log () данные. Но после этого я не могу получить доступ к данным второго вложенного запроса.

Я не получаю никаких ошибок, и не один из моих обработчиков вызывается (например, errorHandler). Самое смешное, что это не вызывает никаких проблем в Safari (Win 7)

1 Ответ

0 голосов
/ 29 августа 2012

У меня была такая же проблема. Я добился того, чтобы он работал, вложив в обратный вызов еще одну транзакцию для первого вызова executeSql (что, на мой взгляд, ужасно уродливо, но так и будет).

context.db.db.transaction(function(tx) {
    tx.executeSql("SELECT coalesce(sum(pointsawarded),0) as points from eventhistory ", [], function(tx, res) {
        alert('h1' + JSON.stringify(res));
        context.db.db.transaction(function(txsafe) {
            txsafe.executeSql("SELECT coalesce(sum(pointsawarded),0) as points2 from eventhistory ", [], function(tx2, res2) {
                alert('h2' + JSON.stringify(res2));
            });
         });
     });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...