私はPhoneGapとjQuery Mobileを使用しています。リモートの場所からいくつかのJSONデータを取得し、ローカルのWebSQLデータベースにそのデータを設定しようとしています。ラインは、上記に:JSコールバック関数でWebSQLトランザクションが実行されない
function getLocations() {
var tx = window.openDatabase('csdistroloc', '1.0', 'Distro DB', 1000000);
tx.transaction(function(tx) {
tx.executeSql('DROP TABLE IF EXISTS locations'); //this line works!
tx.executeSql('CREATE TABLE IF NOT EXISTS locations (id, name, address, postalcode, phone, category)'); //this line works!
$.ajax({
url: "http://mydomain.com/api.php",
dataType: 'json',
data: { action: "getlocations" },
success: function(data) {
tx.executeSql("INSERT INTO locations (id, name, address, postalcode, phone, category) VALUES (2,'cheese','232','seven',5,6)"); //this line produces an error
}});
}, dberror, dbsuccess);
}
上記の関数を実行している私にエラー「DOM例外11 INVALID_STATE_ERR」を与える:ここに私のJS関数です。実際に返されたJSONデータを使用してデータを挿入しようとしているときも同じことが行われます。私も$ .getJSONテクニックと全く同じ結果を試しました。
アドバイスをいただければ幸いです!
(誰かが同様の問題に以前行ったように、私は、誰かがあまりにもこの回答を削除しないことを願っています)、私は基本的に[同じ答え]を書いた(http://stackoverflow.com/questions/12265003/phonegap-invalid-state-err-dom-exception-11/27168338#27168338)を別の質問に追加します。 – Celada
仕様の関連部分はここにあります - http://www.w3.org/TR/webdatabase/#transaction-steps –
次の答えを確認してください。可能な永久的な解決策のために3点目を追加してください:) – TechMaze