Lin*_*nda 5 javascript indexeddb
我需要你们的帮助。
我正在使用indexedDB。我需要使用从数据库中的表中读取记录,Javascript但是从Chrome浏览器V52中收到一条错误消息,提示未捕获InvalidStateError:无法从“ IDBRequest”读取“ result”属性:请求尚未完成。
以下是我的Javascript代码
var db; 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);
}
Run Code Online (Sandbox Code Playgroud)
我在此行收到一条错误消息
var objectStore = db.transaction("ActionCard").objectStore("ActionCard");
Run Code Online (Sandbox Code Playgroud)
您需要学习如何编写异步Javascript。您访问数据库时未定义您的db变量。
不要这样做:
var r = indexedDB.open();
var db = null;
r.onsuccess = function(event) { db = event.target.result); }
Run Code Online (Sandbox Code Playgroud)
做这个:
var r = indexedDB.open();
r.onsuccess = function(event) {
var db = event.target.result;
};
Run Code Online (Sandbox Code Playgroud)
是的,这意味着db在onsuccess函数的范围之外不可用。停止尝试在其范围之外使用它,否则您将遇到遇到的问题。
| 归档时间: |
|
| 查看次数: |
3341 次 |
| 最近记录: |