• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

jQuery load beenden

Alex55

Mitglied
Hallo,

ich hab ein jQuery load Befehl der eine .php Seite jede Sekunde aktualisiert. Ich möchte wenn in der php datei ein bestimmtes Ereignis eintritt, die load Funktion beenden. Wie ist das von der php datei aus möglich? Ich hab schon probiert von der php Datei aus das Script anzusprechen, aber nichts hat funktioniert.

Lg
 
Werbung:
Deine PHP Datei sollte entscheiden welche Seite angezeigt wird. Dieses Erreichst du durch Templates. Wenn du durch JavaScript versuchst eine Seite anhand eines entsprechenden Ereignesses zu laden muss diese Wissen welche Seite bei welchem Ereigniss geladen werden soll und wie der Status des Ereignisses gerade ist.

Solange du dich nicht an Daten wie z.b. der aktuellen Zeit des Benutzers orienntierst (was du nebenbei nur in den seltensten fällen, ohne extra Daten wie z.b. einer Zeitverschiebungs variable, tun solltest), musst du in deiner PHP Datei entweder extra JS Variablen definieren oder wie ich vorher gesagt habe den Ablauf per PHP regeln.

Wenn du übrigens wirklich jede Sekunde die komplette Seite neu lädst empfehle ich dir mit XMLHttpRequest (Auch Ajax genannt) zu arbeiten. Du baust dir einfach eine Seite die jede Sekunde ein im Hintergrund liegendes Skript fragt, wie der aktuelle Status ist und leitet je nach ergebniss entweder auf eine Seite weiter oder wiederholt die Abfrage in X Sekunden.

Lg
 
Hallo,

ich hab ein jQuery load Befehl der eine .php Seite jede Sekunde aktualisiert. Ich möchte wenn in der php datei ein bestimmtes Ereignis eintritt, die load Funktion beenden. Wie ist das von der php datei aus möglich? Ich hab schon probiert von der php Datei aus das Script anzusprechen, aber nichts hat funktioniert.

Lg

Machst du das mit einem 1-sek-Interval, oder was?
Nimm stattdessen Timeouts, da die Ladezeiten nie identisch sind und auch bei sehr schnellen Leitungen mal ein Aussetzer vorkommen kann (Internetverbindung != Webserver Performance).

Mit einem Timeout könntest du das sich wiederholende Laden einfach per clearTimeout stoppen.
Kannst du natürlich auch mit clearInterval machen, aber ich gehe mal davon aus du erstellst vollkommen unkontrolliert in jeder Iteration ein neues XHR Object und wartest auch nicht ab ob die Request erfolgreich war bevor die nächste Iteration gestartet wird. Somit wäre das sehr fehleranfällig.

Wenn dir das nicht hilft, Code posten ;)
 
Werbung:
Wenn du übrigens wirklich jede Sekunde die komplette Seite neu lädst empfehle ich dir mit XMLHttpRequest (Auch Ajax genannt) zu arbeiten. Du baust dir einfach eine Seite die jede Sekunde ein im Hintergrund liegendes Skript fragt, wie der aktuelle Status ist und leitet je nach ergebniss entweder auf eine Seite weiter oder wiederholt die Abfrage in X Sekunden.

Lg

Das tut der TE doch bereits mit seinem jQuery load() ;)

Was die Frage betrifft: Das Ereignis, auf welches reagiert werden soll, kann entweder serverseitig (bsw. update am Model/Datenbank) oder clientseitig (bsw. Usereingaben in Formular) auftreten, aber es wird sich wahrscheinlich nicht um eine Änderung des PHP Scripts handeln. Worum genau geht es denn?
 
So, endlich hab ich's hinbekommen. Dieses blöde jQuery und JavaScript. Ich hab soviel probiert, immer hin und her. Bei einer Seite klappt das, bei der anderen nicht. Im jQuery hat es nicht geklappt (nach einen Ajax Call) aber dafür ohne. Dann hat das eine aus irgendeinen Grund nicht funktioniert. Und dann wiederum das andere! Ich werd noch verrückt!

So jetzt meinen provosorischen Code:

Code:
aktiv = setInterval(function()
{

$('#progressbar').load('progress.php?url='+url+'').fadeIn("slow");

}, 1000);

Ich wollte einfach nur ne URL an ein anderes Script schicken und von dort aus das load beenden! Das hat die ganze Zeit nicht geklappt. Na klar hab ich probiert mit clearInterval, wie hier auch geschrieben wurde, aber es hat nicht funktioniert?! Es sei nicht deklariert hieß es, aber es hat nur innerhalb des Ajax Aufruf nicht funktioniert. Aber warum bloß? Tja, ich hab es immer so gemacht:
Code:
var aktiv = setInterval(function()
{
So hat's auch funktioniert, ohne jQuery. Innerhalb jQuery muss man das var weglassen. Konnte mir das keiner sagen?-.- :D

Jetzt weiß ich nicht ob es eine so elegante Lösung ist die URL als Get-Url zu verschicken? Oder lieber einen Ajax Post innerhalb der Funktion?

Ist es besser wie bei SelfHTML auzufbauen? http://de.selfhtml.org/javascript/objekte/window.htm#set_interval
Oder macht sich das nichts?

Ich werd mir auch noch Timeout's anschauen.

Mein php sieht übrigens ungefähr so aus:
Code:
if ($ende == TRUE)
{
echo '<script> 

clearInterval(aktiv);
</script>';
}

Lg, und danke für die Antworten.
 
So, endlich hab ich's hinbekommen. Dieses blöde jQuery und JavaScript. Ich hab soviel probiert, immer hin und her. Bei einer Seite klappt das, bei der anderen nicht. Im jQuery hat es nicht geklappt (nach einen Ajax Call) aber dafür ohne. Dann hat das eine aus irgendeinen Grund nicht funktioniert. Und dann wiederum das andere! Ich werd noch verrückt!

So jetzt meinen provosorischen Code:

Code:
aktiv = setInterval(function()
{

$('#progressbar').load('progress.php?url='+url+'').fadeIn("slow");

}, 1000);

Ich wollte einfach nur ne URL an ein anderes Script schicken und von dort aus das load beenden! Das hat die ganze Zeit nicht geklappt. Na klar hab ich probiert mit clearInterval, wie hier auch geschrieben wurde, aber es hat nicht funktioniert?! Es sei nicht deklariert hieß es, aber es hat nur innerhalb des Ajax Aufruf nicht funktioniert. Aber warum bloß? Tja, ich hab es immer so gemacht:
Code:
var aktiv = setInterval(function()
{
So hat's auch funktioniert, ohne jQuery. Innerhalb jQuery muss man das var weglassen. Konnte mir das keiner sagen?-.- :D

Jetzt weiß ich nicht ob es eine so elegante Lösung ist die URL als Get-Url zu verschicken? Oder lieber einen Ajax Post innerhalb der Funktion?

Ist es besser wie bei SelfHTML auzufbauen? http://de.selfhtml.org/javascript/objekte/window.htm#set_interval
Oder macht sich das nichts?

Ich werd mir auch noch Timeout's anschauen.

Mein php sieht übrigens ungefähr so aus:
Code:
if ($ende == TRUE)
{
echo '<script>

clearInterval(aktiv);
</script>';
}

Lg, und danke für die Antworten.

Ähhhhh interessant :D
Das muss ich mir mal in Ruhe durchlesen - verstehe zwar was du machen willst und weiß auch wieso es nicht geht aber ich verstehe deinen Versuch nicht ;)

Aber eines vorweg: JavaScript == jQuery. Alles was du in JS verwenden kannst, kannst du auch in jQuery verwenden.
 
Werbung:
Code:
$(function() {
  var foo = function() {
    setInterval(function(){
      alert("Hello World");
    }, 3000);
  };
  foo();
})();
 
Werbung:
Zurück
Oben