Hallo Sven!
Das Argument von eval() muss der auszuführende Code sein. Der in deinem Beispiel auszuführende Code lautet "request.responseText". Wenn dieser Code ausgeführt wird, wird er den Inhalt dieser Objekteigenschaft zurückgeben, die landen in der Variablen foo, und der Rest ergibt sich dann.
Achso, das leuchtet ein. Danke für die Erklärung.
Was du eigentlich willst, ist das Evaluieren des JSON, also des Strings, der in request.responseText enthalten ist:
var foo = eval(request.responseText);
. Man beachte die Abwesenheit von Anführungszeichen.
Das leuchtet mir auch ein. eval('('+...+')') will mir aber noch nicht so recht in den Kopf.
Danke und Grüße, Matze