Gewusst wie: laden Sie dynamischen Inhalt in ein DIV mit JQuery
Ich habe ein div:
<div id="content"></div>
Und wenn die Seite geladen wird, nenne ich ein .load()
. Das laden dauert etwa 10 Minuten dauern und während der Ausführung Ihrer PHP-Datei wieder einige Informationen sagen über den status der Ausführung, so etwas wie Linux laden. Ich will tun, diese Informationen innerhalb des div - #content
dynamisch, aber .load()
setzt nur am Ende der Ausführung. Kann jemand mir bitte helfen, dies zu tun?
Den .load()
nennen:
$("#content").load("/admin/ajax/analyse.php");
- Wenn Sie fügen Sie die gleiche URL in ein browser-Fenster, dauert es 10 Minuten?
- Ja, es ist ein wenig schwer
- Dann gibt es nichts, was Sie tun können, auf dem client-Ende dieses Problem zu beheben. Sie müssen re-Faktor, wie Sie Ihre server-side-code funktioniert.
- Wenn Sie hier Lesen, api.jquery.com/load , Sie werden sehen, eine Funktion namens "abgeschlossen" dokumentiert. Setzen Sie die Funktion in der 3. parameter für den Aufruf von "laden" und es wird aufgerufen, wenn die Daten fertig geladen wurden. Der Parameter enthält die Daten. Versuchen Sie, einige code und Holen Sie sich zurück zu uns.
- Sollten Sie kick-off-Prozess und die andere ruft die ping-server, um updates zu erhalten. Sie sind nicht zu machen "websocket" mit einer http-Aufruf. Vielleicht sollten Sie in web-sockets. 😉
- Ich möchte die Ausgabe dynamisch, vor dem Ende der Ausführung
- Sie sind fehlt den Punkt. Der OP will die stream-Daten nach unten, wie der server gibt es. Nicht ein Stück.
- So funktioniert die server erzeugen die Daten Zeile für Zeile, so zu sprechen? Erwirtschaftet es einige der Daten, es zu senden, erzeugen einige mehr, senden Sie einige mehr, und so weiter? Hat OP die Kontrolle über den server? Kann OP änderungen an der Art, wie es funktioniert?
- Ja, ich Daten zeilenweise. Ja, ich habe die Kontrolle über den server.
- Hinzufügen andere Frage ... funktioniert die Seite geladen werden, wenig durch wenig, von oben nach unten, wenn Sie fügen Sie die URL in ein browser-Fenster?
- Wenn Sie versuchen, öffnen Sie die Seite in einem browser, ich habe die Seite in kleinen, innerhalb der 10 Minuten-Intervall.
Du musst angemeldet sein, um einen Kommentar abzugeben.
jQuery-ajax-Schnittstelle nicht einen Weg, um den Arbeitsfortschritt für eine Antwort (auch wenn es behauptet, eine Obermenge des Browsers die native
XMLHttpRequest
Objekt). Offenbar, so ein use-case ist undenkbar, das die jQuery-Entwickler:Mit der ein
XMLHttpRequest
können Sie direkt Lesen Sie den aktuellen Fortschritt einer Reaktion in einemonreadystatechange
event-handler:Dies funktioniert in den neuesten Versionen der meisten Browser, inklusive IE 10, Chrome und Firefox.
Demos:
Gibt es ein paar Möglichkeiten, um dieses Problem anzugehen, aber alle von Ihnen erfordern wird, die server-Seite ändert. Eine Lösung (die ich denke am besten passt, wie man sich dies vorzustellen, um zu arbeiten) ist long polling.
Sehen diese Frage auf die lange Abfragen mit PHP und jQuery.
Dies ist nur eine Idee, die Sie hätten, zu Spülen ...
Auf dem server,
Auf dem server auch:
Auf der client-Seite,
Sollte für Sie arbeiten.