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.
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!
$.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.
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! |
$('.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)
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 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() {
}
}