2016-08-16 3 views
1

あなたの助けが必要です。未知のInvalidStateError: 'IDBRequest'から 'result'プロパティを読み取れませんでした:要求は完了していません。

私はindexedDBを使用しています。 Javascriptを使用してDBのテーブルからレコードを読み取る必要がありますが、ChromeブラウザV52からのエラーメッセージが表示されます未知のInvalidStateError: 'IDBRequest'から 'result'プロパティを読み取ることができませんでした。以下は

私のJavascriptコード

のvarデシベルです。 var availableJobs = 0;

window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; 

    var request = window.indexedDB.open("MyDbName", 1); 

    request.onsuccess = function (event) { 
     db = request.result; 
    } 

    request.onblocked = function (event) { 
     db = "blocked..."; 
    }; 

    request.onerror = function (event) { 
     db = "Error..."; 

    }; 

    var objectStore = db.transaction("ActionCard").objectStore("ActionCard"); 

    objectStore.openCursor().onsuccess = function (event) { 
     var cursor = event.target.result; 

     if (cursor) { 
      if (cursor.value.ActionCardStatusId == 1 || cursor.value.ActionCardStatusId == 3) { 
       availableJobs++; 
      } 

      cursor.continue(); 
     } 

     $("#availableJobs").html(availableJobs); 
    } 

私はあなたが非同期Javascriptを作成する方法を学ぶ必要がある

var objectStore = db.transaction("ActionCard").objectStore("ActionCard"); 
+0

変数 'db'は、' onsuccess'関数で値を代入していても、常にヌルです。 – Linda

答えて

3

この行にエラーメッセージを取得しています。 db変数は、アクセス時に定義されていません。

はこれをしないでください。

var r = indexedDB.open(); 
var db = null; 
r.onsuccess = function(event) { db = event.target.result); } 

これを行う:

var r = indexedDB.open(); 
r.onsuccess = function(event) { 
    var db = event.target.result; 
}; 

そして、はい、それは意味DBはONSUCCESS機能の範囲外では使用できません。そのスコープの外側で使用しようとすることをやめてください。そうしないと、問題が発生します。

+0

@Josh ...ありがとうございます。出来た – Linda

関連する問題