You are not logged in.

wcf.regNote.message

Prometheus

Administrator

  • "Prometheus" started this thread

Posts: 3,295

Location: Hagen

Occupation: EDV Dienstleister

  • Send private message

1

Tuesday, October 20th 2009, 8:32pm

Wie kann ich einen Ajax Request mit Unterstützung durch Prototype in Intervallen ausführen lassen bis ein gewisser Zustand erreicht ist?

Ich habe ein recht umfangreiches Tool gebaut und hänge grade an einer Stelle ein wenig fest. Dort geht es darum beim Hochladen einer Datei mittels Formular den Fortschritt anzuzeigen. Dank der PECL Erweiterung Progressupload geht das auch soweit. Ich nutze Prototype und Ajax um den Status des Uploads zu ermitteln und lasse mir einfach eine Prozentzahl ausgeben. Der Abruf dieser Zahl soll mit Ajax laufen. Nun habe ich allerdings das Problem, dass ich die Funktion dazu 2 mal pro Sekunde aufrufen möchte und hier aber nicht weiß wie ich das machen kann. Ich kann einfach nicht in Erfahrung bringen wie weit der Upload ist in dem Moment wo ich den Status abrufen lasse. Das heißt ich habe eine JS Funktion welche den Abruf des Status ausführt und gleichzeitig auch den Upload in Gang setzt. Wenn ich nun eine while-Schleife erstelle und abfrage wie viel % bereits hochgeladen wurden läuft die Schleife bis zum Ende aller Tage da ja in dem Moment wo die Funktion ausgeführt wird der Upload bei 0% anfängt und dies ist eben der Wert mit dem die Schleife arbeitet. Selbst wenn nun mein Ajax Request ein verstecktes Inputfeld in dem Formular anspricht und dort auch tatsächlich die Zahl verändert wird bekommt das die while-Schleife nicht mit. Ein alert was ich zum Test eingebaut habe zeigt mir in meiner Schleife ist der Wert immer bei exakt 0. Das ganze ist so verfahren, dass sogar mein Firefox abstürzt und ich somit kein Stück weiter komme.

Weiß vielleicht jemand eine Alternative wie ich den Ajax Request vielleicht so umbauen könnte, dass er nur ein mal aufgerufen wird und den Wert dann fortlaufend an das Ausgabediv übermittelt bis eben der Upload fertig ist und durch den Refresh der Seite das ganze so oder so anhält?

ShaoKhan

www.Spiegelwelt.com

Posts: 369

Location: 127.0.0.1

Occupation: EDV Dienstleister

  • Send private message

2

Friday, October 23rd 2009, 10:39am

Du bekommst doch beim upload die $_FILE["name"]["size"]

mach doch sowas wie

while($i < $filesize)
{
show_progressbar($i);
}

nur 'n Gedanke, vielleicht hilft er.
Roman-Tick -- werde auch du Autor
Spiegelwelt -- Tritt ein und sieh eine andere Welt

bauser

Intermediate

Posts: 382

Occupation: Student Informatik FH Aachen

  • Send private message

3

Wednesday, November 18th 2009, 6:56pm

also. ich weiß nicht, wie weit du dich in javascrip auskennst, daher ein paar "basics" erstmal.

eine funktion nach 2 sekunden verstrichener zeit ausführen lassen:

Source code

1
window.setTimeout('funktion()', 2000);


eine funktion alle 2 Sekunden ausführend lassen:

Source code

1
var timerHandle = window.setInterval('funktion()', 2000);


den timer stoppen:

Source code

1
window.clearInterval(timerHandle);


meine rangehensweise wäre:
1) ein php script machen, was nur die aktuelle größe der zieldatei ausgibt
2) eine funktion machen, die per new Ajax.Request das script aufruft und den ausgegebenen wert zurück gibt
3) beim absenden des formulars die funktion periodisch ausführen, bis die datei hochgeladen ist

vg
bauser
I'm Tony Menthanar! You fuck wit me, you fuckin' wit da best!