Zum Inhalt springen

Ajax im Module

Erstellt am 27. Mai 2017 · 1 Antwort · letzte Antwort am 5. Juni 2017

Tags: Extbase, JavaScript & AJAX, TYPO3 8, Frage

getit ·

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.