PHP Script per Jquery/Ajax einbinden und Steuern

Wutaler

Mitglied
Hey zusammen,

wahrscheinlich eine leichte Lösung für euch, aber ich weiß nicht ob ich das am besten per Jquery GET/LOAD/AJAX lösen soll..

Ich habe einen PHP-Kalender. Ansicht wie ein Kalenderblatt auf dem Wandkalender.
Jetzt blätter ich innerhalb des Kalenders per URL durch, also z.b.:

Code:
<a href="kalender.php?monat=3&jahr=2020" title="vorheriger Monat">vorheriger Monat</a>
<a href="kalender.php?monat=5&jahr=2020" title="nächsterMonat">nächster Monat</a>

Jetzt möchte ich aber ständige Pagereloads vermeiden und das ganze Script per Jquery in einem <div> laden.
Den Kalender selbst in das <div> laden ist kein Problem, aber die Steuererung des kalenders macht es schwierig, da die Links mit Monat vor und zurück im script selbst generiert werden (wegen der Monats- und Jahreszahlen halt).

Hoffe konnte mich verständlich ausdrücken :)

Liebe Grüße
Wutaler
 
Das löst man am besten mit delegierten Eventhandlern:
https://api.jquery.com/on/#direct-and-delegated-eventsDu registrierst den Handler auf das div, wo der Kalender drin ist (erster Parameter), und übergibst als zweiten Parameter einen Selektor für den betr. Link. Wenn Du Zugriff auf den Code des Kalenders hast, ist das am einfachsten, wenn Du jedem Link eine ID gibst. Wenn nicht, muss man u. U. auf das title-Attribut zurück greifen. Dann kannst Du aus dem href-Attribut die URL auslesen und mit Ajax laden.
Natürlich kann man das Ganze auch ohne jQuery realisieren, aber mit ist es etwas einfacher.
 
Hi Sempervivum,

danke für die schnelle Antwort.
Ja auf das Kalenderscript habe ich kompletten zugriff. Da wäre es kein Problem den Links eine eindeutige ID zuzuweisen.
Die funktion on() muss ich mir dann mal anschauen. Die kam mir so gar nicht in den Sinn.

Ich werde mal tüfteln, dankeschön.
 
klar... Ajax aus on("click") etc reagieren lassen kein Thema..
Aber ich verstehe nicht wie ich jetzt die Kalender.php-Datei in meine index.html datei laden kann und die Kalender.php-Datei dann auf die Links reagieren soll, wenn diese links in der Kalender.php-Datei selbst verankert sind.

Da steig ich noch nicht hinter
 
wie ich jetzt die Kalender.php-Datei in meine index.html datei laden kann
Mit jQuery-load:
Code:
$('id-des-containers').load('url-des-kalenders');
Angenommen, der Link für "nächster Monat" hat die ID "next", dann kannst Du einen Eventlistener so registrieren:
Code:
$('id-des-containers').on('click', '#next', event => {
    // in event.target findet man das geklickte Element,
    // hier: den Link einschl. der URL-Parameter
    const url = event.target.href;
    $('id-des-containers').load(url);
    // jetzt müssen wir noch die Default-Aktion des Links,
    // nämlich das direkte Aufrufen des Kalenders, unterdrücken:
    event.preventDefault();
});
ungetestet
 
Zuletzt bearbeitet:
Hi,

danke für deine Mühe.. Das hat leider nicht funktioniert.
Aber ich habe das ganze jetzt einfach als Ajax request gelöst und somit funktioniert es ohne probleme :)

lieben gruß
 
Zurück