[Frage] Ajax und Extbase TYPO3-Version: -

  • daFalk daFalk
    Padawan
    0 x
    62 Beiträge
    0 Hilfreiche Beiträge
    14. 10. 2014, 19:21

    Hi,

    mich beschäftigt folgendes Problem:
    ich entwickel unter TYPO3 6.2 eine im Prinzip simple Gallery-Extension. Der extensionkey ist fr_gallery. Den ersten roundtrip habe ich mit dem Extension-Builder gemacht.

    Nun möchte ich über AJAX einzelne Bilder nachladen. Dazu muss ich eine URL-Aufruf an einen meinen ItemController an die Atcion singleshowAction schicken. Dort steht momentan nur return('bla'); drin.

    Leider bekomme ich nichts zurück außer:

    1. []
    2. <!-- Parsetime: 0ms -->

    Was mache ich falsch?

    meine ext_localconf:

    1. \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    2. 'FR.' . $_EXTKEY,
    3. 'Ajax',
    4. 'Item' => 'showsingle'
    5. ),
    6. // non-cacheable actions
    7. 'Item' => 'showsingle'
    8. )
    9. );

    mein TS:

    1. tx_frgallery_ajax = PAGE
    2. tx_frgallery_ajax {
    3. typeNum = 666
    4. config {
    5. disableAllHeaderCode = 1
    6. xhtml_cleaning = 0
    7. admPanel = 0
    8. additionalHeaders = Content-type: text/plain
    9. no_cache = 1
    10. }
    11.  
    12.  
    13.  
    14. 10 = USER
    15. 10 {
    16. userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    17. pluginName = Ajax
    18. extensionName = FrGallery
    19. controller = Item
    20. vendorName = FR
    21. action = showsingle
    22. switchableControllerActions {
    23. Item {
    24. 1 = showsingle
    25. }
    26. }
    27.  
    28. settings =< plugin.tx_fr_gallery.settings
    29. persistence =< plugin.tx_fr_gallery.persistence
    30. view =< plugin.tx_fr_gallery.view
    31. update =< plugin.tx_fr_gallery.update
    32.  
    33. }
    34. }

    Wenn ich jetzt im Browser einen der folgenden Links aufrufe passiert nix ausser oben beschriebene Ausgabe.

    1. index.php?type=666&tx_frgallery_ajax[action]=showsingle&tx_frgallery_ajax[controller]=Item
    2. index.php?type=666&tx_fr_gallery_ajax[action]=showsingle&tx_fr_gallery_ajax[controller]=Item
    3. index.php?type=666&fr_gallery_ajax[action]=showsingle&fr_gallery_ajax[controller]=Item

    Doch eigentlich müsste jetzt doch ein bla zurückkommen oder?

    Den Weg über Dispatcher hab ich den ganzen Tag schon versucht mit noch weniger Erfolg.

    Hoffe dass mir jemand helfen kann.

    bestes! Falk


  • 1
  • daFalk daFalk
    Padawan
    0 x
    62 Beiträge
    0 Hilfreiche Beiträge
    15. 10. 2014, 08:50

    Also, es läuft nun soweit.
    Das neue TS:

    1. ajaxCall = PAGE
    2. ajaxCall {
    3. typeNum = 667
    4. config {
    5. disableAllHeaderCode = 1
    6. # Folgendes: Es gibt verschiedene headertypen. ich hab ehier zu Testzwecken html gfenommen, da ich mir ein Bild zurückschicken habe lassen.
    7. #additionalHeaders = Content-type:application/json
    8. additionalHeaders = Content-type:text/html
    9. xhtml_cleaning = 0
    10. admPanel = 0
    11. debug = 1
    12. no_cache = 1
    13. metaCharset = UTF-8
    14. }
    15. 10 = USER
    16. 10 {
    17. userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    18. pluginName = Ajax
    19. extensionName = FrGallery
    20. controller = Item
    21. vendorName = FR
    22. action = showsingle
    23. switchableControllerActions {
    24. Item {
    25. 1 = showsingle
    26. }
    27. }
    28.  
    29. settings =< plugin.tx_fr_gallery.settings
    30. persistence =< plugin.tx_fr_gallery.persistence
    31. view =< plugin.tx_fr_gallery.view
    32. update =< plugin.tx_fr_gallery.update
    33. #Folgendes sollte eigentlich in der constants eurer Extension angegeben werden, je nachdem wo eure DS gespeichert werden, also anpassen. :)
    34. persistence.storagePid = 22
    35. }
    36.  
    37. }

    nun kann ich alles aufrufen in dem ich, egal wo ich mich befinde, einfach ?type=667 anhänge.

    Beim AJAX-Aufruf allerdings gibts noch eine Besonderheit:

    1. function loadImage(){
    2. if($xhr !== undefined) { $xhr.abort(); }
    3. $xhr = $.ajax({
    4. url: "http://www.deineurl.de/index.php?type=667" ,
    5. type: "GET",
    6.  
    7.  
    8. success: function(data) {
    9.  
    10. console.log(data)
    11. },
    12. error: function(error) {
    13. console.log(error.responseText);
    14. }
    15. });
    16. }

    Wenn keine Headermitgesandt werden (disableAllHeaderCode =1) dann kommt das Ergebnis ins error.responseText. Das nervt.

    Bestes.

  • 1