Daten mittels AJAX an eigene Klasse übermitteln

Hallo zusammen

Erst kürzlich bin ich auf OXID gestossen und möchte für einen Kunden ein Modul für OXiD 4.7.8 entwickeln. Das Modul soll dem Kunden eine Entscheidungshilfe bieten, um so die Einzelteile für ein Gesamtprodukt zusammenstellen zu können. Dazu sollen mithilfe des Moduls schrittweise gefiltert werden, um so die Produkte auswählen zu können.

Das erstellte Modul konnte ich bereits im System anmelden und ebenfalls anzeigen lassen (über index.php?cl=noyzfilter).

Wird auf der Seite eine Auswahl getroffen, sollen mittels jQuery und AJAX die Daten an die erstelle Klasse übermittelt werden und anhand dieser Daten den nächsten Schritt generiert werden.

Nun die eigentliche Frage: wie kann ich die Daten an die Klasse/Objekt übermitteln. Bisherige Versuche enden immer mit eine Fehlermeldung:

Fatal error: Class ‘oxUBase’ not found in …noyzfilter.php

noyzfilter.php ist die Klasse des Moduls:


class noyzfilter extends oxUBase {

    public function init() {
        parent::init();
        $this->_sThisTemplate = 'noyzfilter.tpl';
    }

    public function render() {
        parent::render();
        print_r($_POST);
        if (isset($_POST['action']) && !empty($_POST['action'])) {
            $action = $_POST['action'];
            switch ($action) {
//        case 'evaluateAjaxRequest' : evaluateAjaxRequest($_POST['checkedItems'], $_POST['categories']);
                case 'evaluateAjaxRequest' : $this->_aViewData[filter] = "Hat funktioniert";
                    break;
            }
        } else {
            $this->_aViewData[filter] = $this->generateFilterContent();
        }

        
        return $this->_sThisTemplate;
    }
...
}

Den AJAX-Aufruf über jQuery:


    $.ajax({
        type: "POST",
        data: {
            action: 'evaluateAjaxRequest',
            checkedItems: checkedItems,
            categories: categories
        },
        url: "modules/noyz/noyzfilter/views/noyzfilter.php",
//        url: "modules/noyz/noyzfilter/views/ajaxResponder.php",
        success: function(data) {
            data = eval(data);
           ...
        }

Besten Dank und freundliche Grüsse
Daniel

Die Klasse muss in metadata im Files-Array registriert werden und mit index.php?cl=deineKlasse aufgerufen werden.

Hallo Frank

Die Klasse ist bereits in der metadata.php-Datei eingetragen und der Aufruf funktioniert ebenfalls. Ich habe jedoch den Fehler gefunden und zwar in der jQuery Datei:

Anstatt:

$.ajax({
    type: "POST",
    data: {
        action: 'evaluateAjaxRequest',
        checkedItems: checkedItems,
        categories: categories
    },
    url: "modules/noyz/noyzfilter/views/noyzfilter.php",

// url: “modules/noyz/noyzfilter/views/ajaxResponder.php”,
success: function(data) {
data = eval(data);

}

Muss die URL auf url: “index.php?cl=noyzfilter” geändert werden.

    $.ajax({
        type: "POST",
        data: {
            action: 'evaluateAjaxRequest',
            checkedItems: checkedItems,
            categories: categories
        },
        url: "index.php?cl=noyzfilter",
        success: function(data) {

Das hat das Problem gelöst, danke vielmals

gruss
Daniel