Nach vielem Probieren und such im Netz habe ich endlich eine Möglichkeit gefunden, in meinem Modul ein AJAX-Call zu starten:
TYPO3\CMS\Core\Utility\ExtensionManagementUtilityExtensionManagementUtility::registerAjaxHandler();
Aber leider habe ich jetzt noch 2 Probleme:
1. registerAjaxHandler() ist als veraltet markiert und wird mit TYPO3v9 entfernt.
Was soll ich als Ersatz verwenden?
Ich habe einfach mal den Inhalt dieser Funktion direkt hingeschrieben.
Also statt dem obigen Aufruf:
$GLOBALS['TYPO3_CONF_VARS']['BE']['AJAX']['kkbaybwBackendLebenslage::sort'] = [
'callbackMethod' => 'KKSoftware\\Kkbaybw\\Controller\\Backend\\LebenslageController->sortAjax',
];
2. Wie komme ich an den Response?
var objVal = $('input[type="hidden"][name="object"]').val();
var ajaxUrl = TYPO3.settings.ajaxUrls['kkbaybwBackendLebenslage::sort'];
$.ajax({
url: ajaxUrl,
method: 'POST',
data: {
lebenslage: objVal
},
dataType: "json",
success: function(response) {
console.log(response);
}
});
/**
* @return string
*/
public function sortAjax() {
$data = $_POST['lebenslage'];
$data = json_decode($data, true);
arsort($data); // erstmal zum testen immer so
return json_encode($data);
}
Der 'console.log(response);' im JS ist immer leer.
Wieso?
Hoffentlich kann mir jemand bei meinen 2 Problemen behilflich sein.