我正在开展一个项目,我从我的服务器数据库中获取特定用户,并将用户数据插入本地电话数据库。我在事务中使用ajax(jsonp)请求执行此操作(请参阅代码)。如果我运行此代码,它将给我一个INVALID_STATE_ERROR。
我已经尝试在db.transaction中包装tx.executeSql(在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);
});
如果需要更多代码或信息,请告诉我们!
谢谢大家!
答案 0 :(得分:0)
我遇到了同样的问题(“InvalidStateError”)但是在AJAX回调中创建一个新事务解决了我的问题。将数据插入数据库也可以正常工作。
尝试在onError回调中记录错误
tx.executeSql(sqlStatement, dataArray, onSuccess, function(tx, err) {
console.log(err.message);
});
可能会发生另一个错误,导致数据无法写入数据库。