Autor | Zpráva | ||
---|---|---|---|
Medvídek Profil |
#1 · Zasláno: 16. 11. 2011, 12:36:20 · Upravil/a: Medvídek
Narazil sem na problém s polem, kterej mi vrací JSON přes funkci JSON encode.
JSON se mi vrací v tomto tvaru: {"status":200,"widget":{"759":{"name":"kancel\u00e1\u0159","id":759,"desc":"Posledn\u00ed kontrola: P\u0159ed 11 minutama<\/strong>","stav":1,"stavDesc":"Porucha!<\/strong> Nastala dnes v 12:19","sekce":{"A":{"nazev":"Sekce A","status":2},"B":{"nazev":"Sekce B","status":2}}},"837":{"name":"Bus na map\u011b","id":837,"desc":"Posledn\u00ed kontrola: P\u0159ed 36 minutama<\/strong>","stav":2,"stavDesc":"Porucha!<\/strong> Nastala dnes v 12:19","sekce":{"A":{"nazev":"Sekce A","status":2},"B":{"nazev":"Sekce B","status":1}}},"925":{"name":"OASiS","id":925,"desc":"Posledn\u00ed kontrola: P\u0159ed 36 minutama<\/strong>","stav":2,"stavDesc":"Porucha!<\/strong> Nastala dnes v 12:19","sekce":{"A":{"nazev":"Sekce A","status":1},"B":{"nazev":"Sekce B","status":1}}},"589":{"name":"J80","id":589,"desc":"Posledn\u00ed kontrola: P\u0159ed 53 minutama<\/strong>","stav":2,"stavDesc":"Porucha!<\/strong> Nastala dnes v 12:19","sekce":{"A":{"nazev":"Sekce A","status":2},"B":{"nazev":"Sekce B","status":1}}}}} A pokud se zeptám na velikost pole přes: alert(widgetReturn.widget.length); //widgetReturn je zpracovani vysledku z ajaxu tak mi to napíše undefined. Ale pokud to normálně zpracuji: $.each(widgetReturn.widget, function(key, value) { for(i=0;i<sections.length;i++){ sections.splice(i); } var widgetKey = widgetReturn.widget[key]['id']; var widgetNazev = widgetReturn.widget[key]['name']; var widgetDesc = widgetReturn.widget[key]['desc']; if(widgetReturn.widget[key]['stav']==1){ if($('#wid'+widgetKey+' div.error').length){ $('#wid'+widgetKey+' div.error').remove(); } } if(widgetReturn.widget[key]['stav']==2){ if($('#wid'+widgetKey+' div.error').length){ $('#wid'+widgetKey+' div.error').html(widgetReturn.widget[key]['stavDesc']); } else{ var errorDiv = $('<div class="error">'+widgetReturn.widget[key]['stavDesc']+'</div>'); $('#wid'+widgetKey).append(errorDiv); } } $('#wid'+widgetKey+' h3 a').text(widgetNazev); $('#wid'+widgetKey+' p').html(widgetDesc); //if(typeof(widgetReturn.widget[key]['sekce']) != "undefined"){ $.each(widgetReturn.widget[key]['sekce'], function(k, v){ if(widgetReturn.widget[key]['sekce'][k]['status']==1){var sectionStatus = 'ok';} if(widgetReturn.widget[key]['sekce'][k]['status']==2){var sectionStatus = 'error';} sections.push('<li class="'+sectionStatus+'">' + widgetReturn.widget[key]['sekce'][k]['nazev'] + '</li>'); }); $('#wid'+widgetKey+' ul').html(sections.join('')); //} }); Tak se vše provede správně. Je tedy jiná možnost, jak hlídat jestli existuje pole widget, popřípadně kolik má v sobě prvků? |
||
Kajman_ Profil * |
#2 · Zasláno: 16. 11. 2011, 12:45:41
Medvídek:
„e tedy jiná možnost, jak hlídat jestli existuje pole widget, popřípadně kolik má v sobě prvků?“ Vrácený widget není pole ale objekt. |
||
__construct Profil |
#3 · Zasláno: 16. 11. 2011, 12:53:37
Medvídek:
„pokud se zeptám na velikost pole“ Ale ten widgetReturn nie je pole, ale objekt.
Ty chceš počítať vlastnosti objektu. To sa dá celkom jednoducho takto: function pocetVlastnosti(objekt) { var vysledok = 0; for(var vlastnost in objekt) { // kontrola či vlastnosť je objektu, alebo zdedená if (objekt.hasOwnProperty(vlastnost)) { vysledok++; } } return vysledok; } console.log(pocetVlastnosti(widgetReturn)); |
||
Medvídek Profil |
#4 · Zasláno: 16. 11. 2011, 13:02:30
Kajman, __construct:
Díky, použil jsem toto: Object.keys(widgetReturn.widget).length |
||
Chamurappi Profil |
#5 · Zasláno: 16. 11. 2011, 13:07:36
Reaguji na Medvídka:
Object.keys funguje jen v některých nových prohlížečích.
|
||
Medvídek Profil |
#6 · Zasláno: 16. 11. 2011, 13:16:21
Chamurappi:
Aha, díky za upozornění, použiji tedy fci od __construct. |
||
Radek9 Profil |
#7 · Zasláno: 16. 11. 2011, 14:56:07
Medvídek:
Možná by bylo lepší použít obě ty funkce. Ověřit, jestli funkce existuje, a pokud ne, tak ji dodefinovat. |
||
Časová prodleva: 12 let
|
0