我是一个使用inxeddb的新手,正在尝试从一个存储中获取数据。存储中包含数据,但是由于某种原因,代码在尝试设置var tx后停止。如果我遗漏了什么,请告诉我。下面是我尝试获取这本书的函数:
function getBook(){
var tx = db.transaction("book", "readonly");
var store = tx.objectStore("book");
var index = store.index("by_getid");
var request = index.get("<?php echo $_GET['book'] ?>");
request.onsuccess = function() {
var matching = request.result;
if (matching !== undefined) {
document.getElementById("text-container").innerHTML = matching.text;
} else {
alert('no match');
report(null);
}
};
}
已解决版本:
function getBook(){
var db;
var request = indexedDB.open("library", 1);
request.onsuccess = function (evt) {
db = request.result;
var transaction = db.transaction(["book"]);
var objectStore = transaction.objectStore("book");
var requesttrans = objectStore.get(<?php echo $_GET['book'] ?>);
requesttrans.onerror = function(event) {
};
requesttrans.onsuccess = function(event) {
alert(requesttrans.result.text);
};
};
}
3条答案
按热度按时间twh00eeo1#
问题可能出在您的db变量上。您可能正在访问一个已关闭或为空的连接对象示例。
请尝试在函数内部创建数据库连接。不要使用全局数据库变量。
5gfr0r5j2#
index.get
生成主键。您必须使用生成的主键获取记录值。2uluyalo3#
我的事务有问题,它是返回错误
db.transaction is not a function
或返回undefined
。您可以尝试这样做,它对我有效: