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:
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:
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