Ladebalken + AJAX geht nicht
wing
- javascript
Guten Tag,
ich habe ein Skript geschrieben, dass einen Ladebalken in meine Webseite einbindet, sobald ich auf einen Ajax-link klicke. Der Balken wird wieder entfernt, sobald alle Daten geladen sind und angezeigt werden.
Nun ist es aber so: Die Funktion, die den Balken setzt, bzw. wieder entfernt, wird erst ausgeführt, sobald alle Daten (Ajax) geladen wurden. Nicht aber vorher, so wie es sein soll!
Kennt jemand das Problem? Oder kann mir jemand einen Tipp geben, wie ich es denn erreiche, dass JS eine Funktion nach der anderen erledigt?
Code:
function ladenstart() {
if (ladebalken == 1) {
if (document.getElementById("ladenstatus").innerHTML = "<img src="imgs/laden.gif" alt=" ... Laden ... " />") {
return true;
} else {
return false;
}
} else {
return true;
}
}
function ergaenzen (p,k,s) {
if (ladenstart()) {
document.getElementById("vokerganz").innerHTML = sendReq("vok_index_formular.php","new=1&p=" + p + "&k=" + k +"&s=" + s);
}
// ladenende();
}
Anmerkung: Ohne die Kontrollstrukturen hat es ebenso wenig funktioniert!
mfg wing
hi,
Nun ist es aber so: Die Funktion, die den Balken setzt, bzw. wieder entfernt, wird erst ausgeführt, sobald alle Daten (Ajax) geladen wurden. Nicht aber vorher, so wie es sein soll!
Kennt jemand das Problem?
Ja - aus Optimierungsgründen rendern die Browser nicht sofort alles neu, so lange ein in sich geschlossener Scriptteil noch nicht abgeschlossen ist.
Oder kann mir jemand einen Tipp geben, wie ich es denn erreiche, dass JS eine Funktion nach der anderen erledigt?
Führe die optische Änderung durch, und starte dann die weiteren Scriptaktionen leicht zeitverzögert über setTimeout.
Kein in sich geschlossener Ablauf mehr = Browser nimmt sich die Zeit zum neu Rendern.
gruß,
wahsaga
Ah super! Hab es hin bekommen!
Allerdings gibt es jetzt noch ein Problem. Und zwar ist die laden.gif eine animierte Gif. Allerdings wird mir nur das erste Bild im Standbild angezeigt, solange bis er fertig ist und per ladenende() das Bild wieder entfernt wird.
Ah super! Hab es hin bekommen!
Allerdings gibt es jetzt noch ein Problem. Und zwar ist die laden.gif eine animierte Gif. Allerdings wird mir nur das erste Bild im Standbild angezeigt, solange bis er fertig ist und per ladenende() das Bild wieder entfernt wird.
Code:
function ladenstart() {
if (ladebalken == 1) {
document.getElementById("ladenstatus").innerHTML = "<img src="imgs/laden.gif" alt=" ... Laden ... " />";
}
}
function ladenende() {
if (ladebalken == 1) {
document.getElementById("ladenstatus").innerHTML = "";
}
}
function abschicken(ab,cd,ef) {
document.getElementById(ab).innerHTML = sendReq(cd,ef);
ladenende();
}
function ergaenzen (p,k,s) {
ab = "vokerganz";
cd = "vok_index_formular.php";
ef = "new=1&p=" + p + "&k=" + k +"&s=" + s;
ladenstart();
window.setTimeout("abschicken(ab,cd,ef)", 25);
}
############
Kann mir keine helfen? Das Bild wird zwar angezeigt, allerdings wird die Animation nicht durchgeführt. Ich kann mir nicht erklären warum das der Fall ist...
Danke schonmal im Vorraus.