[gelöst] Mit jQuery Seitenbereich alle paar Sekunden neu laden

am 27.04.2011 - 20:09 Uhr in
Hallo,
ich möchte, dass ein bestimmter Bereich einer Drupal-Seite per AJAX alle 5 Sekunden neu geladen wird.
Hierzu habe ich folgende Seite gefunden:
http://codekicker.de/fragen/DIV-Inhalt-alle-5-Sekunden-neu-laden-Jquery/411
Unter Drupal bekomme ich das aber leider nicht hin. Wo liegt der Fehler?
Hier der Code. Danke für Eure Hilfe.
Gruß,
Nick Dilis
<?php
drupal_add_library('system', 'drupal.ajax');
drupal_add_library('system', 'jquery.form');
?>
<div id="test">
<?php
$zufallszahl = rand(1,100);
return $zufallszahl;
?>
</div>
<script>
var updateDiv = function ()
{
$('#test').load('http://localhost/d7/content/test-ajax-reload-eines-bestimmten-bereiches', function () {
deinTimer = window.setTimeout(updateDiv, 5000);
});
}
var deinTimer = window.setTimeout(updateDiv, 5000);
</script>
- Anmelden oder Registrieren um Kommentare zu schreiben
Ungeachted des Scriptes,
am 27.04.2011 - 20:19 Uhr
Ungeachted des Scriptes, welches Du dort postest:
<?php
$zufallszahl = rand(1,100);
return $zufallszahl;
?>
Was soll das denn sein?
Und zudem, was ist das überhaupt für ein file, wo Du das ausführst?
Kannst Du PHP und oder jQuery? oder hast Du dir das einfach so "zusammengebastelt" ?
Sollte nur ein Beispiel gewesen sein ...
am 27.04.2011 - 23:41 Uhr
also zu meinen Kenntnissen, zugegebenermaßen bin ich bei beiden Programmiersprachen nicht so der Crack, deswegen ja auch meine Frage.
Das PHP-Skript ist nur ein Test und soll den Reload des Bereiches (id: test) überprüfen, indem bei jedem Reload des Bereichs eine neue Zufallszahl ausgegeben wird.
Der Link bzw. das file was Du ansprichst ist die Seite, die den obigen Code enthält. Ziel ist es ja, den Bereich mit der id 'Test' alle 5 Sekunden neu zu laden.
Zusammengeschustert habe ich das mit Hilfe des oben erwähnten Links.
Gruss,
Nikdilis
Zitat: Das PHP-Skript ist nur
am 28.04.2011 - 08:02 Uhr
Das PHP-Skript ist nur ein Test
aber es ist schon wichtig wo Du den Test ausführst.
Und Dein PHP Schnipsel, wie soll denn das bitte funktionieren? Ein Return in freier Wildbahn????
Kannst Du Dich bitte etwas präziser ausdrücken?
am 28.04.2011 - 09:06 Uhr
ansonsten hilfst Du mir nicht wirklich. Wie gesagt, ich bin kein Experte.
Meinem Verständnis nach wird bei dem Reload ein bestimmter Bereich der Seite über den Server neu geladen. Folglich sollte PHP kein Problem darstellen.
Ich mag hier irren, wenn dem so sein sollte, dann bitte ich um hilfreiche Erläuterungen.
Ggf. kannst Du ein Beispiel aufzeigen, wie sich mein Anliegen realisieren lässt.
Damit wäre wahrscheinlich auch anderen geholfen.
Gruß,
Nick Dilis
momentan macht dein snippet
am 28.04.2011 - 09:49 Uhr
momentan macht dein snippet nicht sonderlich viel sinn. Hier mal ein sinnvolleres Beispiel: (aus dem Kopf getippt, keine Garantie)
<?php
drupal_add_library('system', 'drupal.ajax');
drupal_add_library('system', 'jquery.form');
?>
<div id="test">
ich werde ersetzt
</div>
<script>
var updateDiv = function ()
{
$('#test').load('http://localhost/d7/ajax_test.php', function () {
deinTimer = window.setTimeout(updateDiv, 5000);
});
}
var deinTimer = window.setTimeout(updateDiv, 5000);
</script>
und hier die ajax_test.php, die von dem Javascript periodisch aufgerufen wird, und deren inhalt dem #test-div übergeben wird:
<?php
$zufallszahl = rand(1,100);
print $zufallszahl;
?>
Ich hoffe, so ist es etwas verständlicher.
Wenn man das nun besser mit drupal integrieren will, dann kommt man wohl um ein kleines Modul nicht rum. auf drupal.org gibt es einige ajax-Beispiele zu dem Thema.
Danke, funktioniert aber leider auch nicht.
am 28.04.2011 - 10:42 Uhr
Fehlermeldung im IE8:
Details zum Fehler auf der Webseite
Benutzer-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Zeitstempel: Thu, 28 Apr 2011 09:40:15 UTC
Meldung: Das Objekt unterstützt diese Eigenschaft oder Methode nicht.
Zeile: 283
Zeichen: 1
Code: 0
URI: http://localhost/d7/content/ddl-test-ajax-reload-eines-bestimmten-bereiches
Ein bisschen Recherche +
am 28.04.2011 - 11:03 Uhr
Ein bisschen Recherche + Eigeninitiative von Deiner Seite denke ich darf man schon erwarten, normalerweise nehmen die Leute für Ihr Wissen Geld und spielen nicht "wünsch-dir-was".
Anyway, JQuery + Drupal 7 nutzt nicht $ zum ansprechen des jquery-Objekts sondern 'jQuery':
hier das modifizierte Beispiel, das bei mir funktioniert:
<?php
drupal_add_library('system', 'drupal.ajax');
drupal_add_library('system', 'jquery.form');
?>
<div id="test">
ich werde ersetzt
</div>
<script>
var updateDiv = function ()
{
jQuery('#test').load('<?php print url('ajax_test.php', array('absolute' => TRUE)); ?>', function () {
deinTimer = window.setTimeout(updateDiv, 5000);
});
}
var deinTimer = window.setTimeout(updateDiv, 5000);
</script>
Vielen Dank, hier meine funktionierende Lösung...
am 28.04.2011 - 11:58 Uhr
habe zwar recherchiert, scheine aber für für Drupal bzw. den Drupal-way ein bisschen zu dusselig zu sein (bin hoffentlich nicht der einzige)
Ich bin mir aber sicher, dass dieses Beispiel anderen eine große Hilfe sein wird.
nun zu meiner -mit Hilfe von sth erstellten- Lösung, in der alle 20 Sekunden der Bereich mit der id 'test' (im Beispiel eine Zufallszahl) neu geladen wird.
Sehr simpel, wenn man weiß wie es geht! ;-)
<div id="test">
<?php
$zufallszahl = rand(1,100);
print $zufallszahl;
?>
</div>
<script>
var updateDiv = function ()
{
// #test stellt sicher, dass nur dieser Bereich neu geladen wird.
jQuery('#test').load('<?php print url('http://localhost/d7/content/ddl-test-ajax-reload-eines-bestimmten-bereiches #test', array('absolute' => TRUE)); ?>', function () {
Timer = window.setTimeout(updateDiv, 20000);
});
}
var Timer = window.setTimeout(updateDiv, 20000);
</script>
Sauberere Drupal7 Lösung
am 29.04.2011 - 12:10 Uhr
Siehe auch:
http://t6.forward-media.de/blog/drupal-7-tutorial-javascript-richtig-ein...
Alle 20 Sekunden wird der Bereich mit der id 'test' (im Beispiel eine Zufallszahl) neu geladen.
<div id="test">
<?php
$zufallszahl = rand(1,100);
print $zufallszahl;
?>
</div>
<script>
//Beginn Einbinden von jQuery-Code in Drupal 7
(function ($) {
//Beginn jQuery-Code
var updateDiv = function ()
{
$('#test').load('http://localhost/d7/content/ddl-test-ajax-reload-eines-bestimmten-bereiches #test', function () {
Timer = window.setTimeout(updateDiv, 20000);
});
}
var Timer = window.setTimeout(updateDiv, 20000);
//Ende jQuery-Code
//Ende Einbinden von jQuery-Code in Drupal 7
})(jQuery);
</script>