div-Klasse, die php-Datei inkludiert, automatisch neu laden

  • Hallo liebe JavaScript-Experten unter euch,

    ich hätte da so ein Problem, das mich die letzten Wochen beschäftigt hat, und das lautet folgendermaßen:

    Mein Blog besitzt seit einiger Zeit ein input-Feld, in das die User 100 Zeichen schreiben können. Wir haben es clagg-Feld genannt.
    Der eingegebene Satz wird ganz einfach in einer txt-Datei gespeichert, die immer die letzte Zeile ausgibt. Jeder Besucher kann rumschreiben wie er möchte, was bedeutet, dass man jedesmal die komplette Seite refreshen muss, um zu sehen, ob sich was geändert hat.

    Deshalb dachte ich mir: Bastele ein bisschen herum, damit sich die div-Klasse mit dem clagg-Feld automatisch nach 30s oder so neu lädt.
    Leider habe ich von JavaScript und Ajax ziemlich wenig Ahnung, aber einige Versuche mit Codebeispielen aus diversen Foren haben schon fast das Ziel erreicht.

    Gestern hätte ich es dann fast geschafft. In die header.php kam das entsprechende script, das über getElementById nach 30s das clagg-div (in dem mit php include eine externe php-Datei eingebunden wird) ebendasselbe div mit ebenderselben php-Datei erneut füllen soll.

    Allerdings bekam ich nach 30s immer eine Fehlermeldung, weil die php-Datei nach dem refresh über JavaScript offenbar nicht mehr vom Server ausgeführt wurde.

    Habt ihr das bis hierher einigermaßen verstanden? Ich weiß, das ist alles sehr kompliziert :-D

    Meine Fragen sind nun:

    • Wird die externe php-Datei nach dem Refresh wirklich nicht mehr vom Server ausgeführt und sorgt dann für den Error?
    • Kann man das Problem lösen?
    • Gibt es andere Möglichkeiten, zu bewirken, dass sich die div-Klasse mit der externen php-Datei nach 30s refresht?


    Schon mal im Voraus vielen Dank :-D

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • [FONT=Arial]Ich habe jetzt mal ziemlich viel gegoogelt und mir folgenden code zusammengeschrieben:[/FONT]

    [FONT=Arial]Weiter unten in der header.php wird dann die php-Datei inkludiert:

    [/FONT]

    PHP
    <?php include (TEMPLATEPATH . '/clagg/clagg-display.php'); ?>

    [FONT=Arial]In[/FONT][FONT=Arial] ihr befindet sich folgender Link:
    [/FONT]

    PHP
    <a href="#" class="refresh">Auffrischen</a>

    Bestimmt sagt ihr jetzt: Das kann doch gar nicht funktionieren, weil...
    Sagt mir bitte auch warum :-D

  • Das kann doch gar nicht funktionieren, weil...

    Code
    <script type="text/javascript">
        jQuery(document).ready(function(){ 
            jQuery("a.refresh").click(function(){
            jQuery.get("[COLOR="Red"]/clagg/clagg-display.php[/COLOR]");
            });  
        });        
        </script>
    PHP
    <?php include ([COLOR="#ff0000"]TEMPLATEPATH . '/clagg/clagg-display.php'[/COLOR]); ?>


    ... die URLs nicht gleich sind. ;-)

  • Wenn sich die PHP-Datei im Themeverzeichnis befindet, dann so:

    PHP
    jQuery.get(<?php bloginfo('template_url') ?>"/clagg/clagg-display.php");

    nicht doch eher so?!?

    PHP
    jQuery.get("<?php bloginfo('template_url') ?>/clagg/clagg-display.php");

    ;O)

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

  • Ihr habt natürlich beide Recht, marX hat sich nur ein bisschen vertippt :mrgreen:

    Ich schätze mal, ich brauche eine load-Funktion.
    Sieht bei mir bislang so aus:

    PHP
    <script type="text/javascript">
               jQuery(document).ready(function(){ 
            jQuery("a.refresh").click(function(){
            jQuery("#claggbox").load("<?php bloginfo ('template_url') ?>/clagg/clagg-display.php");
            });  
        });        
        </script>

    Die Funktion soll also nach wie vor über den Link mit der Klasse "refresh" initiiert werden und dann die div-ID namens "claggbox" mit der entsprechenden Datei füllen.
    Klingt eigentlich ganz gut, klappt aber immer noch nicht :-D

  • Ach quatsch, kommt vor... :oops: Außerdem muss ich ja jottlieb noch schnappen, da kann ich doch nicht meine Posts löschen... :mrgreen:

    floffi: Pssssst!!! :D

    Nimm mal statt der Klasse eine ID, bei einer Klasse bekommst du glaube ich eine Collection zurück über die du erst iterieren musst (auch wenn sie nur 1 Element enthält). Ich bin mir aber nicht 100% sicher und hab grad kein jQuery zum testen da (das kann ich nach der Arbeit einfach nicht mehr sehen.... ;-))

  • Das wird ein lustiger Thread :mrgreen:
    Eigentlich habe ich mich nämlich auch falsch ausgedrückt, ich verwende schon eine div-ID, wie es in dem Beispiel auch vorgemacht wird:

    PHP
    <div id="claggbox"><?php include (TEMPLATEPATH . '/clagg/clagg-display.php'); ?></div>

    Daran liegt es aber leider nicht :?

  • Ach ein bisschen Spaß am frühen Abend ist doch ganz nett... ;-)

    Das meinte ich auch nicht, sondern den Link:

    Code
    <a href="#" [COLOR="Red"]class[/COLOR]="refresh">Auffrischen</a>
    Code
    jQuery("a[COLOR="Red"].[/COLOR]refresh").click(function(){
  • Die Konstante TEMPLATEPATH ist außerhalb einer WP-Umgebung nicht gesetzt - und du bist bei dem Aufruf der Datei per Ajax und GET ja außerhalb einer WP-Umgebung. ;-) Du könntest den Pfad statisch angeben, falls das Script nur für dich ist, oder mit PHPs magischen Konstanten (ich denke da z.B. an __FILE__) arbeiten. (Für dein Vorhaben sollte die Datei natürlich auch nur das HTML-Fragment zurückliefern, was du in das <div> nachladen möchtest, aber das scheint auf den 1. Blick ja der Fall zu sein.)

  • Ups...
    Ich habe glaube ich ein paar Links falsch angegeben:

    Mannomann, was für eine Schmach :oops:
    Jetzt schaffe ich es schon nicht einmal mehr, Dateipfade richtig anzugeben.

  • mach doch einfach mal feierabend und geh schlafen ;) eine nacht das hirn ausruhen, hilft mir auch öfter ;O)

    Feedback ist Wichtig!|FAQ|Rückfragen im Forum!|Wenn ich mal was vergesse.... einfach mal sagen...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!