2013-07-07 4 views
0

У меня возникла проблема с использованием запросов sqlite в обратной функции ответа getJSON в приложении phonegap.Запрос sqlite с ajax jQuery?

Я попытался применить этот код и все у меня есть ошибка

INVALID_STATE_ERR: DOM Exception 11: Была сделана попытка использовать объект, который не является, или больше не, годны к употреблению.

мой код

<script> 
    document.addEventListener("deviceready", onDeviceReady, false); 
    function onDeviceReady() { 
     // open DB connection 
     var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000); 
     db.transaction(populateDB, errorCB, successCB); 
    } 

    function populateDB(tx) { 

     tx.executeSql('DROP TABLE IF EXISTS buses'); 
     tx.executeSql('CREATE TABLE IF NOT EXISTS buses (bus_id INTEGER PRIMARY KEY,bus_no TEXT, bus_time TEXT,from_loc TEXT,to_loc TEXT,route TEXT)'); 
     $.getJSON('http://myegy.me/maryam/asem/api.php?table=trip', function(data) { 
       $.each(data, function(key, val) { 

        tx.executeSql('INSERT INTO buses (bus_no,from_loc,to_loc,route) VALUES ("'+val['trip_number']+'","'+val['from_id']+'","'+val['to_id']+'","'+val['stop_station']+'")'); 
       }); 
      }); 

     tx.executeSql('DROP TABLE IF EXISTS bus_stations'); 
     tx.executeSql('CREATE TABLE IF NOT EXISTS bus_stations (id INTEGER PRIMARY KEY,station_name TEXT, station_description TEXT,station_lat TEXT,station_long TEXT)'); 
     $.getJSON('http://myegy.me/maryam/asem/api.php?table=station', function(data) { 
       $.each(data, function(key, val) { 

        tx.executeSql('INSERT INTO bus_stations (station_name,station_lat,station_long) VALUES ("'+val['station_name']+'","'+val['latitude']+'","'+val['longitude']+'")'); 
       }); 
      }); 

    } 

    </script> 

проблема в этих двух строках

tx.executeSql('INSERT INTO buses (bus_no,from_loc,to_loc,route) VALUES ("'+val['trip_number']+'","'+val['from_id']+'","'+val['to_id']+'","'+val['stop_station']+'")'); 

и

tx.executeSql('INSERT INTO bus_stations (station_name,station_lat,station_long) VALUES ("'+val['station_name']+'","'+val['latitude']+'","'+val['longitude']+'")'); 
+0

В какой строке произошла эта ошибка? – Musa

+0

строки, в которых в ответные функции $ .getJSON ||| например: tx.executeSql ('INSERT INTO ....... – user504363

ответ

0

Вы должны двигаться операторы $ .getJSON к функции successCB , и я также предложил бы передать данные json в качестве параметра ter к функции, которая обрабатывает данные как db.transaction.

function successCB() { 
    $.getJSON('http://myegy.me/maryam/asem/api.php?table=trip', function (data) { 
     setBuses(data); 
    } 
} 

function setBuses(data) { 
    this.db.transaction(
     function (tx) { 
      var l = data.length; 
      var sql = 'INSERT INTO buses (bus_no,from_loc,to_loc,route) VALUES (?,?,?,?)'; 
      var b; 
      for (var i = 0; i < l; i++) { 
       b = data[i]; 
       var params = [b.trip_number,b.from_id,b.to_id,b.stop_station]; 
       tx.executeSql(sql, params); 
      } 
     }, 
     errorCB, 
     function() {} 
    ); 
} 

Я предлагаю вам прочитать статью июня 2012 года в Appliness (http://www.appliness.com/download/), называется 'Offline Синхронизация данных', написанная Christophe Coenraets.

+0

при условии, что ссылка мертвая, пустая страница! –

Смежные вопросы