---
title: "Keine JSON-Ausgabe"
url: "https://www.typo3.net/d/118017-keine-json-ausgabe"
source: "typo3.net"
tags: ["Archiv","Flow","Frage","JavaScript & AJAX"]
created: "2014-05-08"
last_reply: "2014-05-09"
replies: 1
solved: false
page: 1
pages: 1
lang: "de"
---

# Keine JSON-Ausgabe

Archiv › Flow · 1 Antwort · gestartet 2014-05-08

## Eröffnungsbeitrag

**morlock** · 2014-05-08 · [Beitrag #1](https://www.typo3.net/d/118017-keine-json-ausgabe/1)

Hallo zusammen!

Ich baue gerade ein paar Prototypen für AJAX-Aufrufe - ich möchte gern Daten per AJAX im JSON-Format abrufen.
Soweit ich den Definitive Guide und das Flow Cookbook verstehe, **sollte** die Ausgabe ja vom Request Header abhängig sein (können). Mein Beispiel ist schon ganz einfach - der Controller:

```php
class StandardController extends \TYPO3\Flow\Mvc\Controller\ActionController {

    /**
     * @var \TYPO3\Flow\Security\Authentication\AuthenticationManagerInterface
     * @Flow\Inject
     */
    protected $authenticationManager;

    /**
     * @var array
     */
    protected $supportedMediaTypes = array('text/html', 'application/json');

    /**
     * @var array
     */
    protected $viewFormatToObjectNameMap = array('json' => 'TYPO3\Flow\Mvc\View\JsonView');

    /**
	 * @return void
     * Liefert die Startseite aus
	 */
	public function indexAction() {
	}


    public function isloggedinAction() {
        $this->view->assign('value', array('loggedin' => $this->authenticationManager->isAuthenticated()));
    }
}
```

Der Abruf erfolgt(e) mit jQuerys $.get - da hier im Request-Header als erlaubte Rückgabe noch text/javascript mit aufgeführt wurde, habe ich die erlaubte Rückgabe selbst angepasst. Der Request-Header sieht nun so aus:

```plaintext
Accept	application/json
Accept-Encoding	gzip, deflate
Accept-Language	de,en-US;q=0.7,en;q=0.3
Content-Type	application/json
Cookie	TYPO3_Flow_Session=x10lY176jm4vKLTtUMD3rDhQ0FMf9paN
Host	172.16.3.123
Referer	http://172.16.3.123/
User-Agent	Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
X-Requested-With	XMLHttpRequest
```

Wichtig: Mir geht es nicht um einen Workaround - wenn ich im Controller ein json_encode mit den gewünschten Daten mache funktioniert's natürlich.
Ich würde aber gern die Flow-Standards verstehen (und einsetzen) und vor allem auch verstehen, wo mein Fehler liegt.

Viele Grüße,
Christian

## Antworten

### [#2](https://www.typo3.net/d/118017-keine-json-ausgabe/2) · morlock · 2014-05-09

Ich habe mich jetzt quer durch den Flow Core gewühlt, um das Verhalten nachzuvollziehen. Meine Erkenntnisse (korrigiert mich, wenn ich falsch liege):

- der ActionController entscheidet in "resolveViewObjectName" letztendlich, welches View Object verwendet wird
- sind keine "eigenen" Views im Package definiert, fällt die Methode über die "viewFormatToObjectNameMap" auf einen dort spezifizierten View zurück
- diese Entscheidung basiert auf der Eigenschaft "format" des ActionRequests
- diese Eigenschaft wird in der Methode setArgument (und eine Ebene weiter oben in setArguments) gesetzt - die Arguments stammen wiederum aus dem HTTP Request in Kombination mit Default-Werten der Route.

Das Problem ist jetzt: in den arguments des HTTP-Requests taucht niemals ein format auf. Es gibt im HTTPRequest zwar eine tolle Methode "getAcceptedMediaTypes" sowie eine "getNegotiatedMediaType" (die letztendlich wohl verwendet wird, um den mediaType im Controller zu setzen - siehe AbstractController), ABER: ich sehe nicht, wo der mediaType wieder verwendet wird. Er scheint keinen Beitrag zur Auswahl des View-Objekts zu leisten.

Definiere ich eine Route für meine Action und setze dort als Format JSON funktioniert natürlich alles. Das entspricht aber nicht dem, was dokumentiert ist:
"In either case, the JSON View is now invoked if a request is sent which prefers the media type application/json." (<http://docs.typo3.org/flow/TYPO3FlowDocumentation/TheDefinitiveGuide/PartIII/ModelViewController.html#json-view>)

Habe ich ein Brett vorm Kopf oder ist das (leider wieder) eine Funktionalität, die im Definitive Guide dokumentiert ist und einfach nicht (fertig?) umgesetzt wurde?

Grundsätzlich: Ich sehe großes Potential in Flow - im Moment aber auch die Gefahr, dass das Projekt mangels Dokumentation irgendwann stirbt. Was meint ihr hier? Oder liegt der Fehler bei mir?

Viele Grüße,
Christian

---

Quelle: „Keine JSON-Ausgabe“, typo3.net, https://www.typo3.net/d/118017-keine-json-ausgabe
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
