Hallo,
Ik ben de laatste tijd bezig een eerste webapp te maken met jqTouch icm de HTML5 openDatabase. Nu heb ik daar een erg handige plugin voor gevonden, jQTouch HTML5 database api extension, maar het wil allemaal niet lekker werken.
Wat is het probleem? Ik roep de database aan in een functie:
(weggehaalde code is slechts check voor goed ontvangen van data via AJAX)
Dit gaat allemaal goed, de initialisatie, het maken van de tabellen en het invoegen van de benodigde data verloopt vlekkeloos.
Echter, als ik ergens buiten die functie data wil ophalen uit mijn database, bijvoorbeeld zo:
Dan verschijnt de volgende foutmelding op mijn scherm:
TypeError: Result of expression 'db' [undefined] is not an object.
Het lijkt me een probleem met de scope van de interne 'db' variabele, of iets met jQT. De enige manier waarop de functie dbSelectAll (of een andere willekeurige query) werkt is namelijk binnen de functie initDB().
Kan iemand mij vertellen wat ik fout doe?
BVD:)
Ik ben de laatste tijd bezig een eerste webapp te maken met jqTouch icm de HTML5 openDatabase. Nu heb ik daar een erg handige plugin voor gevonden, jQTouch HTML5 database api extension, maar het wil allemaal niet lekker werken.
Wat is het probleem? Ik roep de database aan in een functie:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| function initDB() { $.post('../php/actions/prepareDB.php', function(data) { [..] jQT.dbOpen('order_webapp', '1.0', 'WebApp Database', 200000); jQT.dbDropTable("webapp_products"); jQT.dbCreateTables({ "createTables": [ {'table': 'webapp_products', 'property': [ {'name': 'productID', 'type': 'INTEGER PRIMARY KEY'}, {'name': 'productName', 'type': 'TEXT'}, {'name': 'productPrice', 'type': 'DECIMAL(6,2)'}, {'name': 'productPriceFmt', 'type': 'TEXT'} ]}, {'table': 'webapp_shoppingCart', 'property': [ {'name': 'productID', 'type': 'INTEGER PRIMARY KEY'}, {'name': 'number', 'type': 'TINYINT'} ]} ] }); jQT.dbInsertRows(JSON.parse(data)); jQT.dbInsertRows({ "addRow": [ {'table': 'webapp_shoppingCart', 'property': [ {'name': 'productID', 'value': '5' }, {'name': 'number', 'value': '3' } ]} ] }); [..] }); } initDB(); |
(weggehaalde code is slechts check voor goed ontvangen van data via AJAX)
Dit gaat allemaal goed, de initialisatie, het maken van de tabellen en het invoegen van de benodigde data verloopt vlekkeloos.
Echter, als ik ergens buiten die functie data wil ophalen uit mijn database, bijvoorbeeld zo:
JavaScript:
1
2
3
4
5
6
7
| function getData() { jQT.dbSelectAll('webapp_products', function(data){ console.log(data); }); } getData(); |
Dan verschijnt de volgende foutmelding op mijn scherm:
TypeError: Result of expression 'db' [undefined] is not an object.
Het lijkt me een probleem met de scope van de interne 'db' variabele, of iets met jQT. De enige manier waarop de functie dbSelectAll (of een andere willekeurige query) werkt is namelijk binnen de functie initDB().
Kan iemand mij vertellen wat ik fout doe?
BVD:)