borisbaer: AJAX: URL dynamisch abrufen

Hallo zusammen,

ich habe mehrere Tabs, deren zugehörigen Inhalt ich über AJAX abrufe:

$.ajax({ url: 'tab-1.php', success: function(html) {
    $('#ajax-content').empty().append(html);
}

Ich würde jedoch gerne die URL dynamisch laden, also immer das href des ersten Links innerhalb der nav (oder noch besser abhängig davon, ob einer der Links eine bestimmte class bzw. id hat, z.B. a.current). Nun weiß ich leider nicht, wie ich das anstellen soll. Meine Idee war, eine Variable zu erstellen, z.B.:

var url = $('#ajax-tabs a:first-child'); 

Könnte mir jemand weiterhelfen? Vielen Dank!

akzeptierte Antworten

  1. Hallo borisbaer,

    deine url Variable enthält nun ein wrapped set (also das, was jQuery für alle DOM Abfragen erzeugt) mit dem gefundenen a Element. Du brauchst noch das href-Attribut dieses Links.

    Du suchst $("#ajax-tabs a[href]:first-child").attr("href")?

    a[href] ist ein Attributselektor für Attributpräsenz. Den schrieb ich deshalb, weil es auch a Elemente ohne href Attribut geben kann, das sind dann aber keine Links. Wenn Du einen Link mit einer bestimmten Klasse suchst - kein Problem, verwende einen Klassenselektor in der jQuery-Abfrage.

    Das Vorgehen könnte ggf. nicht so geschickt sein, denn ein Link verweist auf eine vollständige HTML Seite während dein Ajax Request nur das HTML Fragment laden muss, das Du auf der Seite austauschen willst.

    Das kannst Du ggf. mit URL Parametern oder selbstgesetzten HTTP Headern steuern, so dass tab-1.php das passende Ergebnis liefert, je nach Art des Abrufs.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Rolf,

      du hast mir sehr geholfen, vielen Dank! Es funktioniert nun so, wie ich es möchte.

      Deinen Tipp bezüglich der URL Parameter bzw. der HTTP Header werde ich wohl so schnell nicht umsetzen können, da ich davon leider gar keine Ahnung habe. Ich bin schon froh, dass es jetzt auf diese Weise funktioniert. Meine Kenntnisse sind ziemlich limitiert. Momentan versuche ich, mein Wissen über jquery und php ein wenig zu erweitern. Ein Schritt nach dem anderen. 😄