Master/detailrelatie met load()

Elke afbeelding op de hoofdpagina verwijst naar dezelfde detailpagina, enkel de parameter id=x is verschillend.

Het bestand ajaxServer/bloemenDetail.php bevat een PHP-script dat in functie van het id een bepaald gedeelte van de pagina toont. Voor alle id's groter dan 5 (of kleiner dan 1) verschijnt een foutboodschap. Bijvoorbeeld http://jquery3.test/ajaxServer/bloemenDetail.php?id=100 geeft:

We gaan de hoofdpagina zodanig aanpassen dat een deel van de detailpagina rechtstreeks op de hoofdpagina verschijnt. Een browser die geen JavaScript ondersteunt zal nog steeds de site op de klassieke manier kunnen bekijken. Ook zoekrobots, zoals Google, ondersteunen geen JavaScript, maar kunnen de site op deze manier nog volledig indexeren.

Het deel van de pagina dat we dadelijk op de hoofdpagina integreren, staat binnen <section id="bloemInfo">

$('#_ a').click(function(e) {
    e.preventDefault();
    var url = $(this).attr('href');
    $('#detail').load(url + ' #bloemInfo', function(){
        ...
    });
});

Het script werkt voorlopig niet omdat de selector op het click-event nog niet in orde is. Dit passen we dadelijk aan.

Binnen het click-event zorgt e.preventDefault() ervoor dat de echte links op de afbeeldingen niet meer werken. Op de derde lijn wordt de link van de detailpagina uitgelezen en vervolgens in de methode load() verwerkt. Vergeet niet het id #bloeminfo in de uiteindelijke link te verwerken, anders gaan we de volledige pagina inbedden!

Enkel de link "Vorige pagina" is nog storend. Deze kunnen we makkelijk binnen de callback van load() verwijderen.

$('#detail').load(url + ' #bloemInfo', function(){
    $('#bloemInfo p:first').remove();
});

Last updated