FLOW3 – wie erstelle ich eine Ajax Action mit json Rückgabe?

Ganz einfach:

im Controller folgende Klassenvariable setzen:

protected $supportedFormats = array("html", "json");
	protected $viewFormatToObjectNameMap = array(
		"json" => "\TYPO3\FLOW3\MVC\View\JsonView",
		"html" => "\TYPO3\Fluid\View\TemplateView"
	);

und in der Routes.yml (bzw. im Routing) einen Eintrag nach folgendem Muster vornehmen:

-
  name: '[name_der_route]'
  uriPattern: '[gewünschter_pfad]'
  defaults:
    '@package':    '[package_name]'
    '@action':     '[action_im_controller]'
    '@controller': '[controller]'
    '@format':     'json'

Mit der Klassenvariable sorgt ihr dafür, dass der Controller beim Format “json” auf ein Template verzichtet und den Return-Value einer Action direkt ausgibt (also im Normalfall per json_encode() formatiert). Mit der Konfiguration der Route legt ihr nur noch fest, dass die jeweilige Action an Stelle von HTML lieber JSON verwendet.

[Update]
Nach der Frage von Mario hier nochmal als Nachtrag eine entsprechende Beispiel-Action:

/**
 *
 * @param string $param
 *
 * @return json test data
 */
public function getDataAction($param) {
	$data = array("testKey"=>$param, "testKey2"=>"testValue2");
	return json_encode($data);
}