HTML5SQL.js: Uncaught TypeError: Невозможно прочитать свойство 'sql' из неопределенного - PullRequest
0 голосов
/ 23 января 2012

Я использую HTML5SQL.js в Google Chrome, но я получаю только эту ошибку:

Uncaught TypeError: Cannot read property 'sql' of undefined

Пожалуйста, посмотрите на этот скрипт, который я использую: http://jsfiddle.net/mporras/Cx3x5/

Ответы [ 2 ]

1 голос
/ 24 января 2012

Как сказано в руководстве на htm5sql.com , есть несколько способов дать html5sql.js SQL-операторы, и ваша ошибка вызвана смешением нескольких разных способов.

Нравитсяxdazz упомянул в своем ответе, что первый аргумент html5sql.process может быть просто строкой с одним или несколькими SQL-операторами.Вы также можете передать массив строк операторов SQL или объектов операторов SQL.Преимущество использования объектов операторов SQL заключается в том, что вы можете определить массив данных и указать отдельные обратные вызовы успеха.

Таким образом, по сути вы можете сделать это:

$(function() {
   html5sql.openDatabase("demo", "Demo Database", 5 * 1024 * 1024);

   html5sql.process(
       [
            "DROP TABLE IF EXISTS speedtest;",
            "CREATE TABLE speedtest (id INTEGER PRIMARY KEY, label TEXT);",
           {
              sql: "INSERT INTO speedtest VALUES (?, ?);",
              data: [1,'1'],
              success: function(transaction, results) {
                   console.info('Success Inserting First Record');
              }
           },
           {
              sql: "INSERT INTO speedtest VALUES (?, ?);",
              data: [2,'2'],
              success: function(transaction, results) {
                 console.info('Success Inserting Second Record');
              }
           }
       ],
       function() {
          console.log("Final Sucess Callback");
       },
       function(error, failingQuery) {
          console.error("Error: " + error.message);
       }
   );
});

Демонстрацию этого можно найти в этом jsfiddle

0 голосов
/ 23 января 2012

Сигнатура функции html5sql.process - html5sql.process(SQL, finalSuccessCallback, errorCallback), поэтому попробуйте путь ниже, а вот demo .

$(function() {
    html5sql.openDatabase("demo", "Demo Database", 5 * 1024 * 1024);

    var st = "DROP TABLE IF EXISTS speedtest; CREATE TABLE speedtest (id INTEGER PRIMARY KEY, label TEXT); INSERT INTO speedtest VALUES (1, '1');INSERT INTO speedtest VALUES (2, '2');";

    html5sql.process( 
      st,
      function(transaction, results) {
         console.info('Success');
      },
      function(error, failingQuery) {
         console.error("Error: " + error.message);
      });
});
...