Frage zu JSON
Rol
- javascript
0 molily
0 Der Martin
Hallo,
ich möchte eine kleine AJAX Anwendung schreiben.
Vom Server soll nach einer Anfrage ein Objekt zurück gegeben werden.
Mein Perl Script macht das zum testen so:
print "[{'id':'0815','param1':'4711'}]";
In meiner Calback Funktion kommt das auch an:
function test()
{
if (http_request.readyState == 4 && http_request.status == 200)
{
foo = eval ("(" + http_request.responseText + ")");
alert(http_request.responseText);
alert(foo.id);
}
}
Der erste alert gibt "[{'id':'0815','param1':'4711'}]" zurück, der zweite aber undefined. Was muß ich machen um an id, param1 usw zu kommen?
Gruß
Rol
[{'id':'0815','param1':'4711'}]
Werd dir klar darüber, was du hier machst:
[
{
'id' : '0815',
'param1':'4711'
}
]
Das ist
1. Ein Array-Literal [ ... ], du erzeugst also ein Array
2. Darin notierst du ein Object-Literal { ... }, also ein Object
3. Diesem Object gibst du zwei Parameter, id und param1
Du hast also einen Array mit einem Object drin
alert(foo.id);
foo ist der Array
Der Array hat keine Eigenschaft namens id
Das Object, das du suchst, ist im ersten Array-Element, also foo[0]
Wenn du direkt mit foo.id arbeiten willst, solltest du das Object nicht noch einmal mit dem Array-Literal [...] in einen Array kapseln.
Mathias
Hi,
Mein Perl Script macht das zum testen so:
print "[{'id':'0815','param1':'4711'}]";
warum packst du das Object, das du modellieren möchtest, noch in ein Arry mit nur einem Element?
foo = eval ("(" + http\_request.responseText + ")"); alert(http\_request.responseText); alert(foo.id);
Der erste alert gibt "[{'id':'0815','param1':'4711'}]" zurück, der zweite aber undefined.
Natürlich. Das Array hat keine Eigenschaft names id, nur das im ersten (und einzigen) Arrayelement enthaltene Object.
So long,
Martin