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