サーバーデータベースから特定のユーザーを取得し、ユーザーデータをローカルの電話データベースに挿入するプロジェクトに取り組んでいます。これは、トランザクション内の ajax(jsonp) リクエストで行っています (コードを参照)。このコードを実行すると、INVALID_STATE_ERROR が返されます。
tx.executeSql を db.transaction でラップしようとしました (ajax 呼び出しの成功の範囲内で)。これにより、INVALID_STATE_ERROR が取り除かれますが、データは挿入されません。
ヘルプ!
取引コード:
db.transaction(function(tx)
{
tx.executeSql('DROP TABLE IF EXISTS userdata');
tx.executeSql('CREATE TABLE IF NOT EXISTS userdata (id INTEGER PRIMARY_KEY, name)');
$.ajax({
url: 'http://[myserver]/getUser.php',
type: 'get',
data: {'user': enteredUser, 'pass': enteredPass},
dataType: 'jsonp',
contentType: "application/json",
jsonpCallback: 'getUser',
/*async: false,*/
timeout: 5000,
success: function(data, status) {
//alert(data.name);
tx.executeSql('INSERT INTO userdata (id, name) VALUES (' + data.id + ', "' + data.name + '")');
},
error: function(a, b, c){
alert('Update Failed: ' + a.status);
alert('Update Failed: ' + c);
}
});
},
onNoUser,
function()
{
db.transaction(checkLogin, showLogin);
});
さらにコードや情報が必要な場合は、お知らせください。
皆さん、ありがとうございました!