Typo3: JSON Beispiel JS, TypoScript, Controller

Montag, 31. Juli 2017

Hier ein vollständiges Beispiel für einen JSON Dispatcher, der ein JavaScript-Objekt im Frontend als JSON an einen Controller im Backend sendet und dann ein JSON zurück bekommt.

Für Suchmaschinen: JSON von JavaScript in PHP auslesen. JSON per Post an Typo3 Controller Backend senden. method=POST, JSON dispatcher für Typo3. Per JavaScript Objekt aus dem Typo3 Backend laden und parsen.

1. Per TypoScript Setup wird über den page-Type eine neuer Ausgabe-Typ für das JSON definiert:

json_beispiel = PAGE
json_beispiel {
   typeNum = 9901
   config {
      disableAllHeaderCode = 1
      xhtml_cleaning = 0
      admPanel = 0
      additionalHeaders = Content-type: text/plain
      no_cache = 1
      contentObjectExceptionHandler = 0
   }
   10 = USER_INT
   10 {
      userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
      extensionName = Beispiel
      pluginName = Beispiel
      vendorName = Vendor
      controller = Controllername
      switchableControllerActions {
         Controllername {
            1 = getJson
         }
      }
   }
}

2. Der Controller nimmt das JSON aus dem Frontend entgegen und sendet ein JSON zurück:

/**
 * JSON im Controller laden
 *
 * @return void
 */
public function getJsonAction () {
 
   $gp = json_decode(file_get_contents('php://input'), true);
 
   // Hier dann was machen...
   $result = ['result'=>'1234'];
   echo json_encode($result, JSON_UNESCAPED_UNICODE);
 
}

3. Und so sieht die Abfrage per JavaScript im Frontend (jQuery) aus:

var url = 'index.php?id=XXX&type=9910';
var data = {beispiel:[10,20,30]};
 
 
$.ajax({
    type: "POST",
    url: url,
    data: JSON.stringify(data),
    success: function (data) {
        func( data );
    },
    error: function (errMsg) {
        alert('Fehler beim Aufruf des Backend.');
    }
});