Zum Inhalt springen

Probleme mit Ajax im Backend

Erstellt am 16. April 2010 · Noch keine Antworten

Tags: JavaScript & AJAX, Frage

TinaE ·

Hallo,

ich entwickel eine Extension, bei der ich Ajax im Backend verwenden möchte. Leider funktioniert das überhaupt nicht. Ich bin nach dieser Anleitung (https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/Index.html) vorgegangen, möchte aber jQuery statt prototype benutzen.

Ich habe folgendes zum Testen gemacht:

Diesen Eintrag in der ext_localconf.php

$TYPO3_CONF_VARS['BE']['AJAX']['manage_skills::deleteSkill'] = 'EXT:te_skills/mod1/manage_skills.php:manage_skills->deleteSkill';

Im Ordner mod1 die Datei manage_skills.php:

<?php
class manage_skills {
    public function deleteSkill($params=array(), $ajaxObj) {
        echo "ajax test";
    }
}
?>

jQuery eingebunden und in meiner js-Datei folgenden Aufruf:

var php_path = "typo3/ajax.php?ajaxID=te_skills::deleteSkill";
$.get(
   php_path,
   function(skill_deleted) {
      alert ("ajax funktioniert");
   }
);

jQuery mit anderen Funktionsaufrufen funktioniert, an einer falschen Einbindung liegt es also nicht.

Eigentlich müsste ich die php-Datei ja auch über http://localhost/typo/ajax.php?ajaxID=te_skills::deleteSkill aufrufen können, oder? Das funktioniert bei mir auch nicht. Habe ich vielleicht einfach nur irgendwelche Definitionen falsch gesetzt?

Wäre schön, wenn mir jemand helfen kann oder mir Extensions nennen kann, wo Ajax-Funktionen im Backend verwendet werden. Vielleicht reicht es ja auch schon, wenn ich mir mal ein Beispiel anschaue.

Vielen Dank und schönen Gruß,
Tina

___________________________
EDIT:
Mit Prototype und folgendem Code funktioniert's:

new Ajax.Request('ajax.php', {
    method: 'get',
    parameters: 'ajaxID=te_skills::deleteSkill',
    onComplete: function(xhr, json) {
        // display results, should be "The tree works"
        alert("funktioniert");
    }.bind(this),
    onT3Error: function(xhr, json) {
        // display error message, will be "An error occurred" if an error occurred
        alert("error");
    }.bind(this)
});

Ich würde aber lieber jQuery benutzen, da ich das auch schon im Frontend verwende.

___________________________
EDIT 2:
Ok, ich habe die Lösung gefunden. Es war mein Fehler, ich sollte jQuery natürlich auch richtig benutzen ;-) Falls es noch jemanden interessiert, so funktioniert's:

$.ajax({
  url: 'ajax.php',
  type: 'POST',
  data: 'ajaxID=te_skills::deleteSkill',
  complete: function(xhr, json) {
    alert('jquery complete');
  },
  success: function(data) {
      alert('jquery success');
  }
});