Preloader
Auf dieser Website werden Daten wie z.B. Cookies gespeichert, um wichtige Funktionen der Website, einschließlich Analysen, Marketingfunktionen und Personalisierung zu ermöglichen. Sie können Ihre Einstellungen jederzeit ändern oder die Standardeinstellungen akzeptieren.
Cookie Hinweise
Datenschutzregelung
10.03.2021

VISION AJAX

Funktionsweise

Die Idee des Modells ist es, dass sich der Ajax mit dem User Interface unterhält, statt der Server mit dem User Interface. Der Vorteil ist, dass man dabei auf das komplette neu laden der Seite verzichtet.

Voraussetzungen

Als erstes wird jQuery benötigt! Von der Grundidee abgeleitet, werden 2 weitere Dinge benötigt. Die Verbindung zwischen Ajax und der Datenbank und die Verbindung vom User Interface zum Ajax. Das bedeutet: Das Userinterface muss vorbereitet werden, das Javascript muss angepasst werden und eine PHP Datei muss die Schnittstelle zwischen Ajax und DB sein!

Beispiel

$.ajax({
	type: 'GET',
	url: 'send-ajax-data.php',
	dataType: "JSON", // data type expected from server
	success: function (data) {
		console.log(data);
	},
	error: function(error) {
		console.log('Error: ' + error);
	}
});

Hier sieht man die Funktionsweise und das Zusammenspiel. Es werden Daten im JSON Format von der Datei send-ajax-data.php angefordert.

Also wie bringt man das Ganze zum Laufen?

User Interface

Das Element muss explizit benannt werden mit einer eindeutigen HTML Klasse um den auszulesenden Wert und einer ID für den Auszulesenden Wert. Außerdem müssen folgende Werte in der HTML Klasse, um den auszulesenden Wert vergeben werden:

rel-ajax="NameDerKlasse"
(aus template/classes/ajax)
Entweder wird an der Stelle ein String oder Float, Integer übergeben 
ODER
Es wird ein JSON Array gefordert
rel-ajax-data="NameDerAjaxPhpDatei"Das sind die Post Werte für z.B Eintragung
rel-ajax-callback="setNoticeMessage"Hier hat man die Möglichkeit einen Callback zu setzen! Man baut eine Funktion in JS und diese wird ausgeführt!

Javascript

$('.companyInformation')
  .find('button')
  .click(function () {
    var elem = $(this).closest('.companyInformation')
    elem.cubeAjax({
      loadFormData: true,
      loadFormDataFrom: '#' + elem.attr('id')
    });
  });

Liest sich folgendermaßen: companyInformation ist die HTML Klasse, welche vergeben wird. ( Was meistens eine Div Box ist). Innerhalb dieser Div Box wird die Klasse Button gesucht und sobald der Button betätigt wird,  wird für diese Div Box der Ajax Call ausgeführt. ( Heißt bei uns einfach nur anders, hat aber ähnliche Funktion!

Bedingung: Es muss im Interface eine Messbare Veränderung stattfinden. Entweder es wird ein Knopf gedrückt ( Button + click Funktion ) oder ein Text wird geändert ( inputField + OnChange Funktion)

PHP

Die Controller Klasse

Sie ist dafür zuständig, dass die jeweilige Ajax Datei ausgeführt wird! In den meisten Fällen ist die Controller Klasse schon implementiert. Es schadet allerdings nicht einmal zu überprüfen, ob die Klasse korrekt implementiert wurde.

//Hier wird der Input bereinigt
$type = filter_input(INPUT_POST, 'type', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$type = empty($type) ? filter_input(INPUT_GET, 'type', FILTER_SANITIZE_FULL_SPECIAL_CHARS) : $type;

//Hier wird das JSON entschlüsselt
$data = json_decode(file_get_contents('php://input'), true);

$type = empty($type) ? $data['type'] : $type;
require_once dirname(dirname(__FILE__)) . '/custom_php/config.php';
require_once dirname(dirname(__FILE__)) . '/classes/system/main/visionClass.php';
require_once dirname(dirname(__FILE__)) . '/classes/system/main/dbConnect.php';
require_once dirname(dirname(__FILE__)) . '/classes/system/main/VisionError.php';

//Hier wird die Anbindung zur Datenbank eingerichtet
$db = new \SYSTEM\MAIN\dbConnect($hostname_localhost, $database_localhost, $username_localhost, $password_localhost);
$db->set_con();
$con = $db->get_con();

require_once dirname(dirname(__FILE__)) . '/custom_php/systemFunctions.php';
require_once dirname(dirname(__FILE__)) . '/custom_php/functions.php';
require_once dirname(dirname(__FILE__)) . '/classes/system/core/Message.php';

//Hier wird der Datenpfad gesetzt
$pathtofile = dirname(dirname(__FILE__)) . "/classes/ajax/ajax_" . $type . ".php";

//Wenn es übereinstimmt, wird es ausgeführt!
if (is_file($pathtofile)) {
	require_once($pathtofile);
	$ajax = "ajax_" . $type;
	$ajax = new $ajax();

	echo $ajax->jsonResponse();
}

Die jeweilige Ajax Klasse

Die Klasse muss nach den Regeln der objektorientierten Programmierung aufgebaut werden. 
Die nachfolgenden Werte dienen lediglich als Beispiel.

Welcher Namespace wird verwendet?
namespace Ajax;

Welcher weiteren Klassen aus welchem Namespace werden verwendet?
use System\System;
use System\ImmoObject;
use System\User;
use System\History;
use System\Message;

Wie heißt die Klasse und von was erbt sie?
class PropertiesDetailsAjax extends \Page\PropertiesDetails

Welche Attribute besitzt die Klasse?
protected $jsonResponse = [];
protected $actionType = 'update';
protected $ajaxCall = true;

Danach muss die Klasse mit init() oder __construct() initialisiert werden. Sonst passiert da nichts!

class ajax_clearCache {
	public function __construct() {
		// Hier kommt die gewünschte Aktion rein. 
	}
	public function jsonResponse() {
    	
	}
}