Asynchrone Abfragen sind in einigen fällen eine gute Möglichkeit viel Arbeit zu sparen.
Man kann ohne die Seite neu laden zu müssen mehrere Feldvalues mittels Asynchroner Abfrage füllen.
Im aktuellen Beispiel vergebe ich im Artikel – Varianten Bereich für jede Variante eine EAN, welche ich aus der Datenbank auslese.
Dazu habe ich ein Modul entwickelt, welches ein neues Feld an jede Variante anhängt und bei noch nicht vorhandener EAN einen Button zum Abrufen hinzufügt.
Wenn nun also der Button “Load” geklickt wird passiert folgendes:
An sich kein Hexenwerk.
Es sind jedoch einige Dinge im Administrativen Bereich zu beachten.
Seit (ich glaube) Version 4.5 wird ein Hidden-Token bei der Übermittlung von HTTP-Requests übergeben.
Das hat zur Schlußfolgerung, dass wenn wir nun keinen Token übergeben, wir aus dem System ausgeloggt werden.
Die dazu benötigten Funktionen liefert OXID natürlich mit.
Hier nun der Code zu den benötigten Dateien (JS und TPL).
Template-File:
[{capture assign=eanParams}]
var eanSrc = "[{$oViewConf->getModuleUrl('ms_ean')}]controllers/admin/ms_ean_ajaxload.php";
var sid = "[{ $oViewConf->getSessionId() }]";
var tkn = "[{ $oViewConf->getSessionChallengeToken() }]";
[{/capture}]
[{oxscript add=$eanParams}]
[{oxscript include=$oViewConf->getModuleUrl('ms_ean','out/admin/src/js/jquery-1.11.2.min.js')}]
[{oxscript include=$oViewConf->getModuleUrl('ms_ean','out/admin/src/js/loadFreeEan.js')}]
JS-File
$(".loadEan").click(function(e){
e.preventDefault();
$(this).loadFreeEan( eanSrc , tkn , sid)
});
jQuery.fn.extend({
loadFreeEan: function ( src , tkn , sid){
var obj = $(this);
$.post(src,{ force_admin_sid : sid, stoken : tkn })
.done(function(data){
ean = jQuery.parseJSON(data);
if(!ean)
alert('Keine verfügbare EAN vorhanden.');
else
obj.parent().children(".ownean").val(ean);
});
},
});
Mit der Funktion $oViewConf->getSessionId() erhalten wir die aktuelle Session ID.
$oViewConf->getSessionChallengeToken() gibt den benötigten Token zurück.
Das ganze übergeben wir nun als Parameter in unseren jQuery.post() Request. Somit kann das System uns als angemeldeter Administrator Identifizieren und loggt uns nicht automatisch aus.
Bei Interesse gehe ich gerne weiter auf das Modul EAN ein.
Entwicklung von PHP, MySQL, HTML & CSS seit 2002. Aktuelles Framework OXID. Entwickler eines Onlineshops.
Be the first to comment.