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

    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)

  2. #2
    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.

  3. #3
    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

  4. #4
    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

  5. #5
    Erfahrener Benutzer Avatar von Hardy
    Registriert seit
    24.01.2007
    Beiträge
    2.235
    hmm keine ahnung warum die Umlaute nicht anzeigt werden...bei mir übrigens auch nicht...
    habe das :
    PHP-Code:
    header('content-type: text/html; charset=utf-8'); 
    auch schon versucht in die ajax.php einzugeben brachte aber keine änderung...naja ist wahrscheinlich sowieso besser die Sonderzeichen in Unicode zu schreiben (http://www.html-world.de/program/html_sz.php) ansonsten gibt es ja auch editoren wie weaverslaver die alle sonderzeichen => unicodes ändern...

  6. #6
    Erfahrener Benutzer Avatar von WaechterMedia
    Registriert seit
    02.10.2008
    Beiträge
    172
    ich hab bei den meisten unterseiten die per txt eingelesen werden mir sowieso schon ne funktion geschrieben die die umlaute mit codes ersetzt aber ich hab eigentlich keine lust die ganzen unterseiten zu editieren

    Wird bei dir wenigstens die formulare angezeigt das klappt bei mir irgendwie auch nicht muss mich da mal einlesen wenn ich zeit habe.

  7. #7
    Erfahrener Benutzer Avatar von Hardy
    Registriert seit
    24.01.2007
    Beiträge
    2.235
    wenn <form> nicht innerhalb <table> ist wird das formular bei mir angezeigt

  8. #8
    Erfahrener Benutzer Avatar von SebbyPHM
    Registriert seit
    17.07.2006
    Beiträge
    844
    Umlaute müssen in Unicode geschrieben werden, da Ajax i.d.R. nur für UTF8 gedacht ist.

    Als kleinen jQuery-Denkansatz:

    Code:
    // Formulare innerhalb vom DIV-Container
    // mit der ID "content" auf jQuery umleiten
    
    $("#content form").submit(function(){
        var url = "ajax.php?"+$(this).attr("action");
        var method = $(this).attr("method");
        var method = method.toLowerCase();
        var showPage = function (data) {
            $('#content').html(data);
            $('#content').fadeIn('normal');
        }
        var params = {};
        for(var i=0; i<this.elements.length; i++) {
            e = this.elements[i];
            params[e.name]=e.value;
        }
        if (methos == "post") { $.post(url, params, showPage); }
        else { $.get(url, params, showPage); }
        return false;
    });
    
    // Alle Links innerhalb von dem DIV-Container umleiten
    
    $(document).ready(function() {
    	$("#content").click(functions(){
    		$("a").each(function () {
    			$.get("ajax.php?"+$(this).attr(href), "", function(data){
            			$('#content').html(data);
            			$('#content').fadeIn('normal');
    			});
    		});
    	});
    });
    Mit freundlichem Gruß
    SebbyPHM




Ä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
  •