Matze: Verständnisproblem JSON

Beitrag lesen

Hallo!

Darauf wende ich an:

var foo = eval('request.responseText');

document.getElementById('test').innerHTML = stats.length;


> > wobei request.responseText das JSON-Array ist.  
> Wieso `stats.length`{:.language-javascript}? Was ist denn `stats`{:.language-javascript}?  
  
Sorry der falsche Variablenname hat sich ins Beispiel eingeschlichen, hab ich noch gar nicht bemerkt.  
stats === foo  
  

> > Ich dachte die Ausagbe mit .length gibt mir die Anzahl der Elemente des Arrays, es gibt mir aber die Länge des Arrays als String wieder.  
> Wo kriegst du die Länge des Arrays als String? Kannst du mal ein vollständiges Minimalbeispiel (mit Beispieldaten) verlinken?  
  
Also mein JSON sieht verkürzt so aus:  
  
[{"WebCamName":"Rockau","Protokoll":"ws444","GPS":"5101'42.05\"Nord 1351'42.83\"Ost","Hoehe":"252"},{"WebCamName":"Loschwitz","Protokoll":"ws2300","GPS":"5103'10.11\"Nord 1349'20.48\"Ost","Hoehe":"190"}]  
  
Mein JavaScript (mit "stats"):  
  
~~~javascript
<script type="text/javascript">  
var loop = setInterval('get_stats()', 60000);  
function get_stats(){  
    var request = null;  
    try{  
        request = new XMLHttpRequest();  
    }  
    catch (ms){  
        try{  
            request = new ActiveXObject("Msxml2.XMLHTTP");  
        }  
        catch (nonms){  
            try{  
                request = new ActiveXObject("Microsoft.XMLHTTP");  
            }  
        catch (failed){  
            request = null;  
        }  
    }  
}  
request.open("GET", 'get_stats.php', true);  
request.onreadystatechange = function(){  
    switch(request.readyState){  
        case 4:  
            if(request.status == 200) var stats = eval('('+request.responseText+')'); // Der Teil mit dem eval()  
            document.getElementById('cam').innerHTML = stats[0].WebCamName;  
            break;  
        default:  
            return false;  
            break;  
    }  
}  
request.send(null);  
}  
</script>

Und ein Div mit der Id "cam".
Ersetze ich jetzt oben eval('('+request.responseText+')') durch eval('request.responseText') und document.getElementById('cam').innerHTML = stats[0].WebCamName; durch document.getElementById('cam').innerHTML = stats.length; erhalte ich nicht wie erwartet 2 sondern eine Zahl im zweitausender Bereich. Ebend die Länge des Strings. stats[0].WebCamName ergibt dann natürlich auch undefined im FF.

Grüße, Matze