---
title: "Ajax-Aufruf in Extension"
url: "https://www.typo3.net/d/128535-ajax-aufruf-in-extension"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage","JavaScript & AJAX","TYPO3 8"]
created: "2021-05-05"
last_reply: "2021-05-11"
replies: 7
solved: true
page: 1
pages: 1
lang: "de"
---

# Ajax-Aufruf in Extension

Extensions › Entwicklung · 7 Antworten · gelöst · gestartet 2021-05-05

## Frage

**s_reinecke** · 2021-05-05 · [Beitrag #1](https://www.typo3.net/d/128535-ajax-aufruf-in-extension/1)

Hallo!

Ich versuche in eine eigene Extension einen einfachen Ajax-Aufruf einzubauen, aber ich bekomme einfach nichts zurück, bzw. einen Fehler in der Ajax-Funktion (SyntaxError: Unexpected end of JSON input).

JS:

```php
function fetchdata(){
  var zeit;
  $.ajax({
    url: 'index.php?type=6666&tx_abfahrtsmonitor_feabfahrtsmonitor[controller]=Zeiten&tx_abfahrtsmonitor_feabfahrtsmonitor[action]=ajax',
    method: 'POST',
    dataType: "json",
    async: false,
    success: function(response){
      console.log("Success: "+response.zeit);
      zeit = response.zeit;
    },
    error: function(jqXHR, textStatus, errorThrown) {
      console.log('Error: ' + textStatus + ' ' + errorThrown);
    }
  });
  return zeit;
}
```

TS:

```typoscript
ajax_api = PAGE
ajax_api {
  typeNum = 6666
  config {
    disableAllHeaderCode = 1
    xhtml_cleaning = 0
    debug = 0
    no_cache = 1
    admPanel = 0
  }
  10 < tt_content.list.20.abfahrtsmonitor_feabfahrtsmonitor
}
```

Controller:

```php
class ZeitenController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
  public function ajaxAction()
  {
    $result = array();
    $result["zeit"] = "17:23";
    return json_encode($result);
  }
}
```

Ich habe schon alle Varianten ausprobiert: mit und ohne "tx_", sämtliche Plugin-Schreibweisen, beim Ajax-Aufruf den dataType geändert und weggelassen, async true und false, einfache Strings als Rückgabewert, return und echo. Es kommt entweder der Json Fehler oder nichts.

Hat vielleicht jemand eine Idee, wo ich noch debuggen könnte?

Danke und Grüße,
Stephan

## Beste Antwort

**s_reinecke** · 2021-05-10 · [Beitrag #6](https://www.typo3.net/d/128535-ajax-aufruf-in-extension/6)

Ich habe es jetzt hinbekommen, weiß aber nicht genau woran es jetzt lag. ;-)

Hier meine Lösung:

Im Ajax-Aufruf ist es jetzt doch mit "tx_", also so:
?type=6666&tx_abfahrtsmonitor_feabfahrtsmonitor[controller]=Zeiten&tx_abfahrtsmonitor_feabfahrtsmonitor[action]=ajax

Und im Setup habe ich es so gelöst:
ajax_api = PAGE
ajax_api {
  typeNum = 6666
  config {
      disableAllHeaderCode = 1
      additionalHeaders = Content-type:application/json
      xhtml_cleaning = 0
      debug = 0
      no_cache = 1
      admPanel = 0
  }
  10 = USER
  10 {
      userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
      pluginName = Feabfahrtsmonitor
      vendorName = XXX
      extensionName = Abfahrtsmonitor
      controller = Zeiten
      features.requireCHashArgumentForActionArguments = 0
  }
}

## Antworten

### [#2](https://www.typo3.net/d/128535-ajax-aufruf-in-extension/2) · Teisinger · 2021-05-06

Ich würd mal gucken welcher Fehler ausgepuckt wird - das kannst du entweder in der BrowserConsole Chrome: Tab Network -> url anklicken -> preview ... oder die Seite halt direkt im Browser aufrufen.

Abhängig von dem was du vor hast, gibts unter Umständen auch bessere Alternativen zu deinem typeNum page.

Unabhängig davon, du brauchst ein TYPO3 Update (DSGVO).

### [#3](https://www.typo3.net/d/128535-ajax-aufruf-in-extension/3) · s_reinecke · 2021-05-07

Moin!

Das ist ja das komische, es wird anscheinend nichts zurückgegeben. Beim Direktaufruf ist die Seite komplett leer, kein Response. Ich habe die Vermutung, das das typeNum die Action nicht richtig aufruft. Ich habe schon mal einen Ajax-Aufruf über typeNum hinbekommen, aber da gab es auch einen normalen View (für ein Modal-Popup). Hier möchte ich ja nur einen Wert zurückgeben zur Weiterverarbeitung.

Ich habe es auch mit der eId Methode probiert, das hat auch nicht geklappt. Hast du noch andere Alternativen?

Übrigens ist das eine Kundenseite, die wollen partout nicht updaten, daher die alte Version. ;-)

### [#4](https://www.typo3.net/d/128535-ajax-aufruf-in-extension/4) · Julian.​Hofmann · 2021-05-08

Werf doch mal noch ein TEXT-Objekt in das PAGE-Objekt rein. Dann siehst Du bei Direktaufruf zumindest mal, ob das Problem in der Seite (typeNum=6666) liegt, oder ob es beim Plugin (bzw. dessen Einbindung) zu suchen ist.

Unter "tt_content.list.20.abfahrtsmonitor_feabfahrtsmonitor" ist aber eine Konfiguration in TS, die stimmig aussieht? (Template -> ObjectBrowser)

### [#5](https://www.typo3.net/d/128535-ajax-aufruf-in-extension/5) · s_reinecke · 2021-05-10

Das mit dem TEXT Objekt war schon mal ein guter Tipp, danke! Damit habe ich jetzt herausgefunden, wie der Aufruf im Ajax richtig ist, nämlich ohne das "tx_":
index.php?type=6666&abfahrtsmonitor_feabfahrtsmonitor[controller]=Zeiten&abfahrtsmonitor_feabfahrtsmonitor[action]=ajax

Damit krieg ich jetzt mit einem TEXT Objekt den Wert zurück. Wenn ich dann wieder
10 < tt_content.list.20.abfahrtsmonitor_feabfahrtsmonitor
aktiviere, bekomme ich jetzt die Seite, bzw. den View zurück (ohne Header usw.). Hier stimmt also die Action noch nicht.

Im Objectbrowser sieht für mich alles ok aus:
[abfahrtsmonitor_feabfahrtsmonitor] = USER
[userFunc] = TYPO3\CMS\Extbase\Core\Bootstrap->run
[extensionName] = Abfahrtsmonitor
[pluginName] = Feabfahrtsmonitor
[vendorName] = XXX

Ich habe die Action für den Ajax Aufruf in der ext_localconf.php beim configurePlugin eingetragen, muss das evtl. noch woanders rein?

### [#6](https://www.typo3.net/d/128535-ajax-aufruf-in-extension/6) · s_reinecke · 2021-05-10 · Beste Antwort

(Text siehe oben unter „Beste Antwort“.)

### [#7](https://www.typo3.net/d/128535-ajax-aufruf-in-extension/7) · Julian.​Hofmann · 2021-05-10

Die Änderung zwischen Deinen beiden heutigen Post ist im Aufruf.

Prinzipiell rufst Du erstmal eine Seite auf und dies mit typeNum=6666. Dorthin übergibst Du weitere Argumente für (d)ein Plugin. Während Du zunächst auch dort das "tx_" entfernt hattest, ist es beim zweiten Posting wieder da. D.h. im ersten fehlte dem Plugin eine Info zur gewünschten Action (diese ist weder im TS, noch in einem validen Parameter der URL). somit dürfte Dein Plugin auf seine Default-Action zurückgefallen sein.

Du kannst Dir ggf. die Parameter auch ganz sparen und direkt im TS mit angeben. Siehe hierzu z.B. <https://www.npostnik.de/typo3/extbase-plugin-per-typoscript-einbinden/> (Kommentar von Robbie):

```typoscript
lib.foo = USER
lib.foo {
  userFunc = tx_extbase_core_bootstrap->run
  extensionName = MyExtension
  pluginName = MyPlugin
  switchableControllerActions {
    MyController {
      1 = listspecial
    }
  }
}
```

### [#8](https://www.typo3.net/d/128535-ajax-aufruf-in-extension/8) · s_reinecke · 2021-05-11

Ja, das mit den Parametern im Setup hab ich auch probiert, habe das mit der Action aber nicht hinbekommen. Ich probiere das gleich noch mal, ist ja doch etwas eleganter. :)

---

Quelle: „Ajax-Aufruf in Extension“, typo3.net, https://www.typo3.net/d/128535-ajax-aufruf-in-extension
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
