Hallo,
ich versuche gerade ein BE Modul zu erstellen. Dabei sollen per AJAX Daten an eine Controller Methode übergeben werden und abgearbeitet werden.
Nach aktuellen DOCs gibt es dafür eine API.
Ich gabe dies nun wie folgt umgesetzt:
ext_tabels.php
// BE AJAX Handler
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerAjaxHandler (
'CoursesController::sendMailAjax',
'PCON\\Cmt\\Controller\\CoursesController->sendMailAjax'
);
CoursesController.php
/**
* AJAX Call
* @param type $params
* @param \TYPO3\CMS\Core\Http\AjaxRequestHandler $ajaxObj
*
*/
public function sendMailAjax($params = array(), \TYPO3\CMS\Core\Http\AjaxRequestHandler &$ajaxObj = NULL) {
print_r($this);
$lec = $this->lectorsRepository->findAll();
// $requestArguments = $this->request->getArguments();
// $ajaxObj->addContent('sendEmail', array('success' => TRUE));
// $ajaxObj->addContent('content', array('content' => $requestArguments['content']));
$out = array('status' => 'I am alive');
header('Content-Type: application/json');
return json_encode($out);
javascript
// BE AJAX Lösung bzw. eID
jQuery('#sendMail').click(function(e) {
var ajaxUrl = TYPO3.settings.ajaxUrls['CoursesController::sendMailAjax'];
jQuery.ajax({
url: ajaxUrl,
type: 'POST',
data: {
'heading': 'Hallo Überschrift',
'subheading': 'Subüberschrift',
'content': 'Sinnloser Content'
},
dataType: "json",
success: function(result) {
console.log(result);
},
error: function(error) {
console.log(error);
}
});
});
Der Ajax Request funktioniert soweit und der Controller wird aufgerufen.
Nun habe ich folgende Probleme:
1.) Es werden keine Daten an den Controller übertragen. Was mache ich hier falsch?
2.) Der Controller gibt mir keine Daten zurück
3.) Das über AJAX aufgerufene Object ist quasi leer. Alle Eigenschaften (z.B. Repositories) sind leer und können daher nicht angesprochen werden.
Bitte um Hilfe...