Ergebnis 1 bis 10 von 23

Thema: Content via AJAX aufrufen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Man müsste, abgesehen vom Javascript Code, auch an den PHP Dateien was ändern, da diese ja (bps.w die content/intern/mediadaten.php) nicht "direkt" aufgerufen werden können.

    Und komplett, also via ?content=/intern/medidaten hätte man ja nix gespart, da ja doch wieder "alles" berechnet und ausgegeben würde.

    Evtl eine ajax.php in das Hauptverzeichnis, die dann beim Aufruf von ajax.php?content=/intern/mediadaten die header.php und menues und footer etc weglässt, und nur functions.lib/layout.lib (für head()/foot() ) einbindet, und natürlich die entsprechende "Content" Datei.

    Ganz grob gesagt, in der header.php und footer.php um den "Inhalt" ein <div> rum
    , müssen nur noch alle Links umgeschreiben werden, dass diese eben den Javasript Aufruf machen.

    Wäre aber so keine schöne Lösung, bspw.fehlt dann noch Feedback für den User (Ladeanimation, wenns mal wiederlänger dauert), es muss quasi jeder Link manuell angepasst werden, funzt dann auch nur bei Usern mit Javascript aktiviert usw.

    Evtl. ist da sowas wie jQuery hilfreich, damit ist es auch möglich, ohne die Links zu ändern, Regeln zu definieren, und das JS fügt den Links nachträglich die AJAX Funktionalität hinzu, jemand der JS deaktiviert hat, bei dem bleibt halt alles wie gehabt.

    Auch Animationen, bspw. dass sich der "alte" Inhalt "einrollt", der neue dann ausrollt usw., Ladeanimation wäre damit einfacher.

    Um eine extra PHP datei wird man aber auch so nicht rumkommen.

    Wenn du damit Traffic sparen willst, bringt das aber vermutlich nicht so sonderlich viel, da die paar KB von header/menus/footer vermutlich nicht den Großteil ausmachen, sondern eher Grafiken, und die Headergrafik wird ja bei den meisten Besuchern gecached bspw.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  2. #2
    Erfahrener Benutzer Avatar von Hardy
    Registriert seit
    24.01.2007
    Beiträge
    2.235
    Über jQuery habe ich schon viel gelesen aber so richtig wüsste ich jetzt nicht wie ich da was anstellen sollte um das so hinzubekommen.
    Gibt es irgendwo ne Documentation?

  3. #3
    Erfahrener Benutzer Avatar von WaechterMedia
    Registriert seit
    02.10.2008
    Beiträge
    172
    Hatte ich auch schonmal drüber nachgedacht aber ich denke es ist die arbeit die man reinstecken müsste um einen sauberen und schönen code zu haben nicht wert den wie jpw bereits gesagt hat macht es dann im endeffekt nicht den großen unterschied es sei denn es geht um die optik.

    Wenn man ein bischen rumbastelt klappt es auch ohne viel zu ändern denke ich aber es ist dann hallt bastelei

  4. #4
    Erfahrener Benutzer Avatar von Hardy
    Registriert seit
    24.01.2007
    Beiträge
    2.235
    In erster Linie geht es mir um die Optik...werde mir morgen mal das von didith anschauen vielleicht hilft das ja schon und gegen basteln habe ich sowieso nix das mache ich sowieso gerne

  5. #5
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717

    Beitrag

    Was das Hauptprobem ist, sind die fehlenden Angaben der action="" in den Formularen im VMS. Aber auch das lässt sich beseitigen

    Hab mal eine sehr einfache Form davon auf:
    http://jpwfour.kilu.de/
    eingebaut, einloggen, dann auf den AJAX Link auf der Startseite.

    ajax.php im Hauptverzeichnis:
    PHP-Code:
    <?php

    if (isset ($_GET['content']) && !empty ($_GET['content'])) {
        if (
    strpos ($_GET['content'], '../') !== FALSE) die ('Zugriffsverletzung !');
        if (
    $_GET['content']{0} != '/'$_GET['content'] = '/'.$_GET['content'];
    }

    require (
    'lib/functions.lib.php');
    db_connect();
    require (
    'lib/session.lib.php');
    require (
    'lib/layout.lib.php');
    require ( 
    'lib/extras.lib.php' );
    if (!isset(
    $_GET['content']) || empty ($_GET['content'])) $_GET['content'] = '/intern/startseite';
    if (!
    file_exists('content'.$_GET['content'].'.php')) $_GET['content'] = '/error/keine_seite';

    require ( 
    './content'.$_GET['content'].'.php' );

    db_close();
    exit;
    ?>
    In der header.php natürlich jQuery rein, dann noch ganz unten
    HTML-Code:
    <div id="ajaxc">
    In diesem div wird dann "ausgetauscht".

    In die footer.php ganz oben:
    HTML-Code:
    </div> <!-- #ajaxc, header.php -->
    Damit nicht alle Links ausgetauscht werden, man aber andereseits auch nicht jeden Link einzeln editieren muss, hab ich in der layput.lib.php die Menus auch in ein <div> gepackt, dazu:
    PHP-Code:
    function menuehead($titel){
    echo
    '
    usw was bisher drinwar
      <div class="ajaxm">
    '
    ;
    }

    function 
    menuefoot(){
    echo
    '
      </div>
    usw was bisher drinwar
    '
    ;

    Also neu ist <div class="ajaxm"> bzw. </div>

    So, bisher sollte sich noch nix geändert haben Das kommt dann durch den Code in der footer.php, ganz unten nach </body> und vor </html>:

    HTML-Code:
    <script>
    $(".ajaxm a[class!=noaj]").css("border", "2px dotted blue");
    $(".ajaxm a[class!=noaj]").click(function (event) { 
        turl = $(this).attr("href");
        treffer = turl.match(/content=[\/a-z0-9]+/i);
        $("#ajaxc").slideUp('fast', function() {
            $('#ajaxc').load('ajax.php',""+treffer, function() {
                $("#ajaxc").slideDown();
                $("#ajaxc form").each( function(index, elem) {
                    if($(elem).attr("action") == ""){
                        $(elem).attr("action", "index.php?"+treffer);
                    }
                });
            });        
        });
        event.preventDefault();
    });
    </script>
    Die 1. Zeile dient nur zum Test die gefundenen Links hervorzuheben.
    Dann die URL (also href="") von dem geklickten Link, den alten Inhalt einfahren, die URL dann über die ajax.php abrufen, wenn fertig gealden, wird der Inhalt automatisch ersetzt, dann wieder ausfahren.

    Danach wird noch in jedem <form> geschaut, wenn action="" leer ist, dann die URL reinsetzen.

    Das beinhaltet jetzt natürlich noch keine gute Fehlererkennung etc. aber es funzt schon mal, die genaue Animation ist ja dann noch beliebig austauschbar.

    http://docs.jquery.com/Main_Page Dokumentation

    Traffic sparen kann man, in dem man die Javascript Datei direkt einbindet von:
    HTML-Code:
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    Muss der Besucher halt dann freigegeben haben.

    --

    Manche Links sollen davon aber dennoch nicht betroffen sein, bspw. der Logout, da reicht es, dem <a> Tag
    HTML-Code:
    <a class="noaj" ....
    zu verpassen.

    Über die Selektoren von jQuery sind einem da ja keine Grenzen gesetzt
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  6. #6
    Erfahrener Benutzer Avatar von WaechterMedia
    Registriert seit
    02.10.2008
    Beiträge
    172
    So dann warte ich mal auf VMS 1.25 mit Live Ajax Content

    Also eigentlich sieht das ja schon ganz gut aus nur müsste man dann hallt die formulare und co auch auf ajax umstellen.

  7. #7
    Erfahrener Benutzer Avatar von Hardy
    Registriert seit
    24.01.2007
    Beiträge
    2.235
    Das ist echt mal geil...den rest kann ich dann schon zusammenkloppen aber so ist es schoneinmal genau das was ich gesucht habe!
    Echt Großen Dank

  8. #8
    Erfahrener Benutzer Avatar von WaechterMedia
    Registriert seit
    02.10.2008
    Beiträge
    172
    so habs gerade auch mal am testen lustigerweise zeigt er mir die unterseiten wenn ich sie über ajax aufrufe ohne umlaute an.

    wenn ich ganz normal zugreife sind die umlaute da, über ajax werden sie durch spacer ersetzt

Ähnliche Themen

  1. Simpler Ajax-Content bringt mich um den Verstand...
    Von tweetymr im Forum [HD] Programmieren
    Antworten: 3
    Letzter Beitrag: 19.09.2011, 15:42
  2. Content via AJAX aufrufen?
    Von Hardy im Forum [HD] Programmieren
    Antworten: 6
    Letzter Beitrag: 30.05.2010, 17:45
  3. Seite aufrufen
    Von ruddi1 im Forum Support zum VMSone
    Antworten: 14
    Letzter Beitrag: 19.06.2008, 16:14
  4. Fehler beim Aufrufen einiger Seiten!
    Von dwarfpitcher im Forum Support zum VMSone
    Antworten: 2
    Letzter Beitrag: 16.01.2008, 00:00
  5. Seite lässt sich nicht aufrufen
    Von dragon11 im Forum Support zum VMSone
    Antworten: 9
    Letzter Beitrag: 30.12.2006, 04:21

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •