Hola,
Via een een AJAX request wil ik een winkelmandje live updaten. Hiervoor maak ik serverside een array en zet ik die om naar JSON (via json_encode()). Mijn AJAX script haalt de gegevens ook als JSON op.
Ik krijg in principe het volgende terug na de AJAX request:
En ik gebruik de volgende code voor mijn AJAX request en het afhandelen daarvan:
Als ik de lengte van dat object wil opvragen dan krijg ik een undefined melding terug. Na wat research ben ik erachter gekomen dat dat komt omdat een object niet hetzelfde werkt als een array.
Maar hoe kan ik dit oplossen? Heb altijd geleerd dat in dit soort gevallen een JSON object terugsturen de beste methode is, maar hoe kan ik dit nu in hemelsnaam verwerken als ik het object niet kan doorlopen?
Via een een AJAX request wil ik een winkelmandje live updaten. Hiervoor maak ik serverside een array en zet ik die om naar JSON (via json_encode()). Mijn AJAX script haalt de gegevens ook als JSON op.
Ik krijg in principe het volgende terug na de AJAX request:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| { "product_count": 3, "total_price": 1700, "cart_recent": { "77de68daecd823babbb58edb1c8e14d7106e83bb": { "id": "3", "name": "Product Y", "price": "170", "qty": 1 }, "da4b9237bacccdf19c0760cab7aec4a8359010b0": { "id": "2", "name": "Product Z", "price": "330", "qty": 1 } } } |
En ik gebruik de volgende code voor mijn AJAX request en het afhandelen daarvan:
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 parse_cart_update(data) { //----------------------------------------- // Nutteloos iknow //----------------------------------------- var obj = data; //----------------------------------------- // Kijken of het 1 product is of xx producten //----------------------------------------- var product_count_str = ''; if( obj.product_count == 1 ) { product_count_str = '1 product'; } else { product_count_str = obj.product_count + ' producten'; } //----------------------------------------- // Html velden updaten //----------------------------------------- $("#cart_product_count").html(product_count_str); $("#cart_total_price").html(obj.total_price); //----------------------------------------- // Geeft undefined //----------------------------------------- alert(obj.cart_recent.length); //----------------------------------------- // Nu wil ik de recente artikelen plaatsen //----------------------------------------- for( var i=0; i < obj.cart_recent.length; i++ ) { //alert(obj.cart_recent[i]); $("#cart-recent").append('<p>' + obj.cart_recent[i].name + '</p>'); } } |
Als ik de lengte van dat object wil opvragen dan krijg ik een undefined melding terug. Na wat research ben ik erachter gekomen dat dat komt omdat een object niet hetzelfde werkt als een array.
Maar hoe kan ik dit oplossen? Heb altijd geleerd dat in dit soort gevallen een JSON object terugsturen de beste methode is, maar hoe kan ik dit nu in hemelsnaam verwerken als ik het object niet kan doorlopen?
[ Voor 18% gewijzigd door Saven op 01-04-2013 14:55 ]