An dieser Linie:IndexedDB: TransactionInactiveError
var request = store.add(obj);
ich den Fehler:
TransactionInactiveError: A request was placed against a transaction which is currently not active, or which is finished.
ich nur die Fehlermeldung erhalten, wenn ich AJAX verwenden. Wie stelle ich sicher, dass der AJAX abgeschlossen wird, bevor die Transaktion abgeschlossen ist? Ich versuche, Informationen aus einer SQL-Datenbank in den Objektspeicher zu laden. Wenn ich den Fehler gegoogelt habe, bekomme ich Informationen über Transaktionen und die asynchrone Natur, aber ich habe keine konkrete Lösung mit Code gefunden.
Ich habe Rückrufe, Versprechungen und Timeouts untersucht (was sich für mich wie ein Hack anfühlt), aber ich kann diesen asynchronen Anruf nicht zur Arbeit bringen. Jede Hilfe würde sehr geschätzt werden.
var req = indexedDB.open(DB_NAME, DB_VERSION);
req.onsuccess = function() {
db = this.result;
var tx = db.transaction('tblFields', 'readwrite');
var store = tx.objectStore('tblFields');
$.ajax({
type: "POST",
url: "Off.aspx/GetFields",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var customers = response.d;
$(customers).each(function() {
var obj = { measureID: this.measureID, measureName: this.measureName, fieldName: this.fieldName };
var request = store.add(obj);
});
},
failure: function (response) {
alert(response.d);
},
error: function (response) {
alert(response.d);
}
});
}